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

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

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.82310 の関連記事表示

<< 0 >>
■82310  メニューバーに排他的チェックボックスをつける方法
□投稿者/ たらこ -(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を入れておく必要があるのでしょうか?
    それでもチェックボックスは表れないのですが
    どのようにすれば良いですか?




親記事 /過去ログ140より / 関連記事表示
削除チェック/

■82312  Re[1]: メニューバーに排他的チェックボックスをつける方法
□投稿者/ Jitta -(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 に設定しています。
記事No.82310 のレス /過去ログ140より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -