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

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

C# と VB.NET の入門サイト

Re[3]: 動的に配置したメニュー項目を特定するには?


(過去ログ 72 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■42306 / inTopicNo.1)  動的に配置したメニュー項目を特定するには?
  
□投稿者/ 初心者 (55回)-(2009/10/12(Mon) 20:54:42)

分類:[.NET 全般] 

分からないことがあるので教えてください。
メニューに数個の項目を動的に配置した場合、そのクリックされた項目を特定するにはどうしたらいいのでしょうか?

//---------------------------------------------------------------------------------
void Form1::AddMenuItem(){
   array<::ToolStripMenuItem^>^ Array = gcnew array<::ToolStripMenuItem^>(10);
   for(int i=0; i<10; i++){
       Array[i] = gcnew ::ToolStripMenuItem();
       Array[i]->Text = i->ToString();
       Array[i]->Checked = true;
       Array[i]->CheckState = System::Windows::Forms::CheckState::Checked;
       Array[i]->Size = System::Drawing::Size(180, 22);
       Array[i]->Click += gcnew System::EventHandler(this, &Form1::MenuItem_Click);
   }
   this->rows_ToolStripMenuItem->DropDownItems->AddRange(Array);
}


System::Void Form1::MenuItem_Click(System::Object^ sender, System::EventArgs^ e){
   MessageBox::Show(sender->ToString());
}
//---------------------------------------------------------------------------------

senderには呼び出し元の情報が入っているようですが、確かに、上記のようにsender->ToString()とすればメニュー項目の名前は取れるのですが、その他が取れません。
checkedの切り替えやどのメニュー項目が選択されたかを知るにはどのようにすればよいのでしょうか?
よろしくお願いします。


引用返信 編集キー/
■42308 / inTopicNo.2)  Re[1]: 動的に配置したメニュー項目を特定するには?
□投稿者/ Hongliang (482回)-(2009/10/12(Mon) 21:28:38)
> senderには呼び出し元の情報が入っているようですが、確かに、上記のようにsender->ToString()とすればメニュー項目の名前は取れるのですが、その他が取れません。
sender に入っているのは、呼び出し元そのもののインスタンスです。
ToolStripMenuItem がイベントを起こしたのなら ToolStripMenuItem のインスタンスが入ります。
ですので safe_cast や dynamic_cast を使ってキャストしてやればいいです。
引用返信 編集キー/
■42309 / inTopicNo.3)  Re[2]: 動的に配置したメニュー項目を特定するには?
□投稿者/ 初心者 (56回)-(2009/10/12(Mon) 22:50:05)
No42308 (Hongliang さん) に返信
>Hongliangさん

ありがとうございます。無事に意図する動作を確認することが出来ました。
本当に感謝です。ありがとうございました。

引用返信 編集キー/
■42310 / inTopicNo.4)  Re[3]: 動的に配置したメニュー項目を特定するには?
□投稿者/ 初心者 (57回)-(2009/10/12(Mon) 22:50:50)
チェックし忘れてました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -