よろしくお願いします。VB.NETを使ってシステムを組んでいます。
テーブルから取得したキーを使い、動的に階層構造のメニューを作成したのですが、選択されたメニューがどのメニューなのかが判断できません。
エクスプローラーを例に上げると、ファイル(F)の「削除(D)」と、編集の「コピー(C)」(共に3番目の項目とする)の判断がつかないのです。
その判断できない、現在行っている方法はINDEXを取得するというものです。
勉強不足で的を外した質問ではあるかもしれませんが、ご教示願いします。
作成するときにCaptionも変更するでしょうから
その際に、IndexとCaptionの情報を配列等使って
関連付けておくとか、、、
#単純にCaptionをみて判断するのはダメなのかなとか思ったり|=x=;
あ、VB6と勘違いしておりました。
失礼致しました。orz
#Select Case mnuHoge(Index).Caption
#みたいなことはできないのかな|_ _;
KGさん、レスありがとうございます。
使用しているコントロール「Menuitems」にCaptionというのは含まれていないようです。
参考までに現在のソースコードを記載します。
Dim mitem As New MenuItem("テーブル項目")
menuFile.MenuItems.Add(mitem)
AddHandler mitem.Click, AddressOf Clicked
Private Sub Clicked(ByVal sender As Object, ByVal e As EventArgs)
MessageBox.Show(mi.Index.ToString())
End Sub
クリックイベントを割当てる際にテーブルから取得した固有コードを割当てる事ができればよいのですが、そのようなプロパティ(?)が見当たりません
最初に書くべき事でしたが、私自身、このような掲示板を利用するのは初めてです。
記述内容に至らない部分がありましたらご指摘ください。
.NETは畑違いなのでさらっと聞き流してかまいませんが、
MenuItemをInheritした、(例えば)MyMenuItemというクラスをMenuに登録できれば楽ができそうですね。
ガッさん、遅くなりました。レスありがとうございます。
Inheritを調べた後、「MenuItem」を継承したクラスを作成することにより「Tag」プロパティを追加して実現することが出来ました。
ありがとうございました。
Public Class MyMenuItem
Inherits MenuItem
Public Tag As Object
End Class
Dim mitem As New MyMenuItem
mitem.Text = テーブル項目 ←(名称)
mitem.Tag = テーブル項目 ←(ID)
menuFile.MenuItems.Add(mitem)
AddHandler mitem.Click, AddressOf Clicked
ツイート | ![]() |