C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[1]: メニューバーに排他的チェックボックスをつける方法


(過去ログ 140 を表示中)

[トピック内 2 記事 (1 - 2 表示)]  << 0 >>

■82310 / inTopicNo.1)  メニューバーに排他的チェックボックスをつける方法
  
□投稿者/ たらこ (1回)-(2017/01/01(Sun) 12:59:40)

分類:[.NET 全般] 


VB.NETでメニューバーにこういう排他的チェックボックスをつけたいのですが

http://home.a00.itscom.net/hatada/visual-studio/windows-forms/csmenu05.png

その方法を教えてください。

検索すると情報ページが見つかりました。

http://dobon.net/vb/dotnet/control/menuradiocheck.html



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)


CheckState かCheckedプロパティを使うと書かれてあるので
両方入れてみたのですがチェックボックスは表れませんでした。

チェックボックスを切り替えるコードが入っていないためだろうと思い、

'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

を入れてみたのですが
ToolStripMenuItem1がないため、動作しません。

あらかじめToolStripMenuItem1を入れておく必要があるのでしょうか?
それでもチェックボックスは表れないのですが
どのようにすれば良いですか?





引用返信 編集キー/
■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 に設定しています。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -