10代と話して驚いたこと

ContextMenuStripに項目をコードから追加したい場合
以下のように書けばどんどん追加することが出来ると思います。

 ContextMenuStrip1.Items.Add("第1層その1");
 ContextMenuStrip1.Items.Add("第1層その2");
 ContextMenuStrip1.Items.Add("第1層その3");

次に、その追加した項目にさらに項目を追加したいと思いました。
ContextMenuStrip1.Items[数字]で追加した項目にアクセス出来ることは分かったのですが
ContextMenuStrip1.Items[0].Add("第2層その1")のように書くことが出来ないので
そこからどうすればよいか、途方にくれてます。
イメージとしては画像のように第二層に動的にitemを追加したいんです。

どなたかご存知のかた、ぜひご教授ください。
わかりにくい箇所は追記させていただきます。

「C#で、ContextMenuStrip」の質問画像

A 回答 (1件)

var tsmiLevel1 = new ToolStripMenuItem("1階層");


var tsl = new ToolStripLabel("2階層ラベル");
var tst = new ToolStripTextBox("2階層テキスト");
var tsmiLevel2 = new ToolStripMenuItem("2階層ボタン");

tsmiLevel1.DropDownItems.Add(tsl);
tsmiLevel1.DropDownItems.Add(tst);
tsmiLevel1.DropDownItems.Add(tsmiLevel2);
contextMenuStrip1.Items.Add(tsmiLevel1);

contextMenuStrip1.Items[0]で取得できるものはToolStripItemクラスであり、階層を作ろうとしたら、それをToolStripMenuItemクラスにキャストする必要があります。
当然、それがキャストできるものかどうかということも関わってきます。
var hoge = contextMenuStrip1.Items[0] as ToolStripMenuItem;

よって、作成タイミング以外の場面で、上階層から遡らないとメニューが特定できないような操作を必要としない限り、下階層から作っていった方がいいですよ。
    • good
    • 0
この回答へのお礼

お礼が遅くなって申し訳ありません。
実践的なご回答参考になります。本当にありがとうございました。

お礼日時:2016/06/23 05:37

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

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報