• ベストアンサー

コントロールの表示されるテキストを変えたい

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

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

Me.Controlsを走査しなくても、ContextMenuStripのItemsプロパティでメニュー項目を列挙できます。ItemsプロパティはToolStripItemクラスのコレクションなので、次のようにループさせてみてください。 ※ContextMenuStripのコントロール名をctxMenuとした場合 For Each item As ToolStripItem In ctxMenu.Items item.Text = "test" Next

keniti_246
質問者

お礼

ありがとうございます。 試したのですが、動作しません。 ctxMenuに陳列すると動作するのですが、サブメニュー化(分岐)すると動作しません。 ctxMenuをサブメニューのオブジェクト名にするとエラーが出ます。 どのようにすればいいのでしょうか?

その他の回答 (1)

  • oboroxx
  • ベストアンサー率40% (317/792)
回答No.2

次のような感じでどうでしょうか。 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; }

keniti_246
質問者

お礼

ありがとうございます。

関連するQ&A