■82312 / inTopicNo.2) |
Re[1]: メニューバーに排他的チェックボックスをつける方法 |
□投稿者/ Jitta (245回)-(2017/01/01(Sun) 16:44:11)
|
■No82310 (たらこ さん) に返信 > > VB.NETでメニューバーにこういう排他的チェックボックスをつけたいのですが > 検索すると情報ページが見つかりました。 > > http://dobon.net/vb/dotnet/control/menuradiocheck.html > > CheckState かCheckedプロパティを使うと書かれてあるので > 両方入れてみたのですがチェックボックスは表れませんでした。
次の部分が該当します。
引用開始〜〜〜〜〜 グループ内で1項目しかチェックマークを付けられないようにする
排他的チェックマークのように、グループ内で1つの項目しかチェックマークを付けることができないようにするには、やはりClickイベントを利用して自分でコードを書きます。
以下の例では、3つのToolStripMenuItem(ToolStripMenuItem1,2,3)の内1つしかチェックマークを付けることができないようにしています。ここではチェックマークを黒丸にしています。 〜〜〜〜〜引用終了
> > > Dim menuFile As ToolStripMenuItem = New ToolStripMenuItem("test") > menuFile.DropDownItems.Add(New ToolStripMenuItem("項目1")) > menuFile.DropDownItems.Add(New ToolStripMenuItem("項目2")) > menuFile.CheckState = CheckState.Checked > menuFile.Checked = True > Me.MenuStrip1.Items.Add(menuFile) > > > 'ToolStripMenuItem1のClickイベントハンドラ > Private Sub ToolStripMenuItem1_Click(sender As Object, e As EventArgs) _ > Handles ToolStripMenuItem1.Click > Dim item As ToolStripMenuItem = DirectCast(sender, ToolStripMenuItem) > 'チェック状態を反転させる > item.Checked = Not item.Checked > End Sub
ここで取り扱う(Handles)のは、menuFile.DropDownItems.Add メソッドで追加した ToolStripMenuItem です。 これらは動的に追加しているので、動的にハンドラを追加します。see then use AddHandler どぼんさんのところでは、For Each 文で groupMenuItems に登録したアイテムをすべて調べます。 Object.ReferenceEquals メソッドで、同じオブジェクト(を参照している)かどうかを調べ、 同じなら CheckState.Indeterminate、 異なるなら CheckState.Unchecked に設定しています。
|
|