- ベストアンサー
コントロールの表示されるテキストを変えたい
ContextMenuStripで Menu1 Menu2 ・・・・Menu10 と10個のメニューがあります。(コントロールは1つです。) これらの表示されるテキストを一括で変えたいのですがうまくできません。普通のテキストボックスなら出来たのですが・・・。 Me.Controls の部分があやしいようにも思うのですが・・・。 よろしくお願いします 言語は VB.NET2008EE 試してみたソースは下記です。 For c As Integer = 1 To 10 Con_Name = "Menu" & c For Each con In Me.Controls If con.Name = Con_Name Then con.text = "test" End If Next Next
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
Me.Controlsを走査しなくても、ContextMenuStripのItemsプロパティでメニュー項目を列挙できます。ItemsプロパティはToolStripItemクラスのコレクションなので、次のようにループさせてみてください。 ※ContextMenuStripのコントロール名をctxMenuとした場合 For Each item As ToolStripItem In ctxMenu.Items item.Text = "test" Next
その他の回答 (1)
- oboroxx
- ベストアンサー率40% (317/792)
次のような感じでどうでしょうか。 private void contextMenuStrip1_Click(object sender, EventArgs e) { foreach (ToolStripMenuItem item in contextMenuStrip1.Items) { changeMenuText(item, "新テキスト");; } } private void changeMenuText(ToolStripMenuItem menu, string newText) { foreach (ToolStripMenuItem item in menu.DropDownItems) { changeMenuText(item, newText); } menu.Text = newText; }
お礼
ありがとうございます。
お礼
ありがとうございます。 試したのですが、動作しません。 ctxMenuに陳列すると動作するのですが、サブメニュー化(分岐)すると動作しません。 ctxMenuをサブメニューのオブジェクト名にするとエラーが出ます。 どのようにすればいいのでしょうか?