プロが教えるわが家の防犯対策術!

質問させてください。

フォームデザイナで作成したContextMenuStripにプログラム内でアイテムを追加し(アイテム数は可変)、そのアイテムにチェックを付けたいと思っています。
しかし、Checkedプロパティが見つからず、チェックを付けることができません。
フォームデザイナでアイテムを追加するとCheckedの項目があって、それをTrueにすることでチェックが付けられるのですが……
後から追加したアイテムにチェックを付ける方法をご存知の方がいらしたら、ご教授お願いします……。

環境はVB.NET、Microsoft Visual Basic 2008 Express Edition SP1です。
よろしくお願いします。

A 回答 (1件)

ContextMenuStrip.Itemsからメニューアイテムを取得しているのではないでしょうか?このプロパティの戻り値はToolStripItemなので、ToolStripMenuItemに変換しないとCheckedは使えません。



Dim clsMenu As New Windows.Forms.ContextMenuStrip()

clsMenu.Items.Add("メニュー1").Name = "Menu1"

CType(clsMenu.Items("Menu1"), Windows.Forms.ToolStripMenuItem).Checked = True
    • good
    • 0
この回答へのお礼

ありがとうございます、無事に動きました。
自分が試していた方法と全く違っていました……。
仰るとおり、ToolStripMenuItemに変換せずにずっと悩んでいました……。
また一つ勉強になりました。ありがとうございます。

↓のようにプログラムを書き換えたところ、無事に動作しました。

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim Example As String() = System.IO.File.ReadAllLines("example.txt", System.Text.Encoding.GetEncoding(932))
For Each i As String In Example
ContextMenuStrip1.Items.Add(i).Name = i & "ToolStripMenuItem"
Next
AddHandler ContextMenuStrip1.ItemClicked, AddressOf ToolStripMenuItem_ItemClick
ListView1.ContextMenuStrip = ContextMenuStrip1
End Sub
Private Sub ToolStripMenuItem_ItemClick(ByVal sender As Object, ByVal e As System.Windows.Forms.ToolStripItemClickedEventArgs)
CType(ContextMenuStrip1.Items(e.ClickedItem.Text & "ToolStripMenuItem"), ToolStripMenuItem).Checked = True
End Sub

お礼日時:2009/08/25 19:42

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!