ラジオチェックのメニューで、グループで排他のチェックをするようにしてみた。
BigCheckMenuItemは以下の以前の記事の載せています。
http://d.hatena.ne.jp/kabacsharp/20111008/1318057324
BigRadioCheckItem.cs:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows.Forms; namespace ABCS.UserClass { public class BigRadioCheckItem : BigCheckMenuItem { public MenuItem[] GroupMenuItems { get; set; } public string Tag = string.Empty; public BigRadioCheckItem(string strgText) : base(strgText) { this.RadioCheck = true; this.Click += ehOnClick; } protected void ehOnClick(object sender, EventArgs e) { if (this.GroupMenuItems != null) { foreach (MenuItem mi in this.GroupMenuItems) { if (sender.Equals(mi)) { mi.Checked = true; } else { mi.Checked = false; } } } } } }
呼び出し(作成)側のルーチンは以下のよう。
(間にsettingSingletonが混じっているけど)
Form.cs:
//キーボード起動キー Menu.MenuItems.Add("キーボード起動"); BigRadioCheckItem[] brmi = new BigRadioCheckItem[3]; brmi[0] = new BigRadioCheckItem("クリック"); brmi[0].Tag = settingsSingleton.KeyRaiseOnNormalClick; brmi[0].Click += this.menuNormalClick; brmi[1] = new BigRadioCheckItem("Shift+クリック"); brmi[1].Tag = settingsSingleton.KeyRaiseOnShiftClick; brmi[1].Click += this.menuShiftClick; brmi[2] = new BigRadioCheckItem("Alt+クリック"); brmi[2].Tag = settingsSingleton.KeyRaiseOnAltClick; brmi[2].Click += this.menuAltClick; brmi[0].GroupMenuItems = brmi; brmi[1].GroupMenuItems = brmi; brmi[2].GroupMenuItems = brmi; this.raiseSoftKeyboardGigRadioCheckItem = brmi; Menu.MenuItems[2].MenuItems.AddRange(brmi);