- 題名: メニューアイテムの識別について
- 日時: 2004/08/13 16:34:38
- ID: 5550
- この記事の返信元:
- (なし)
- この記事への返信:
- [5561] Re[1]: メニューアイテムの識別について2004/08/13 21:03:21
- [5574] Re[1]: メニューアイテムの識別について2004/08/15 1:20:30
- ツリーを表示
■No5577に返信(ぺがらぼさんの記事)
> 実は、MenuItemにNameプロパティが無いのです。その為、ぱるさんは、.Textで識別しようとしていたと思われます。
いえ、MSDNによれば、== 演算子に関して『string 以外の参照型の場合、
== では 2 つのオペランドが同じオブジェクトを参照する場合に true が返されます。』
とのこと。
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/csref/html/vclrfequalityoperator.asp
そして、senderはイベントの発生源のオブジェクトへの参照なのですから、
たとえば次のようにすればイベントの発生源の識別ができると思います。
private void menuItems_Click(object sender, System.EventArgs e) {
if (sender == menuItem1){
Console.WriteLine("menuItem1 Clicked !");
}else if (sender == menuItem2){
Console.WriteLine("menuItem2 Clicked !");
}else if (sender == menuItem3){
Console.WriteLine("menuItem3 Clicked !");
}else if (sender == menuItem4){
Console.WriteLine("menuItem4 Clicked !");
}
}
私はC#のコード書いたことがないので(汗、頓珍漢だったらすみません。
分類:[.NET]
いつも参考にさせていただいています。
メニューアイテムのクリックイベントを共通のメソッドで処理したい
と思っています。
現在、各メニューアイテムを識別する方法として、Textプロパティを
参照しています。
private void menuItem_Click(object sender, System.EventArgs e)
{
switch (((MenuItem)sender).Text)
case "A":
:
:
:
ただしこの方法だと、Textを変えるたびにメンテナンスが発生してしま
うため、できれば他の方法がないかと悩んでいます。
他によい方法がおわかりの方、ご教授いただけないでしょうか。
よろしくお願いいたします。