10

複数のコントロールにを使用しておりContextMenuStrip、実際にクリックしてコンテキスト メニューを開くコントロールを取得する最良の方法を見つけようとしています。送信者は、ToolStripMenuItemを参照する所有者プロパティを持つ参照を提供するだけContextMenuStripですが、クリックがどのコントロールから来たのかを知る方法がわかりません。これを確認する簡単な方法があるはずですよね?ToolStripMenuItemのクリックイベントで確認しています。

Friend WithEvents mnuWebCopy As System.Windows.Forms.ToolStripMenuItem
...
Private Sub mnuWebCopy_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles mnuWebCopy.Click

これについて同様の投稿を見つけましたがSourceControl、ここには表示されないプロパティ の使用について言及しています。

Visual Studio 2008、VB.Net winforms を使用しています。

4

5 に答える 5

23
Private Sub mnuWebCopy_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles mnuWebCopy.Click

Dim myItem As ToolStripMenuItem = CType(sender, ToolStripMenuItem)
Dim cms As ContextMenuStrip = CType(myItem.Owner, ContextMenuStrip)

MessageBox.Show(cms.SourceControl.Name)

End Sub
于 2010-01-15T21:43:46.507 に答える
6

送信者は ToolStripMenuItem です -- キャストします。
その所有者は ContextMenuStrip です -- 入手してください。

SourceControl は ContextMenuStrip のプロパティであり、ContextMenuStrip が表示された最後のコントロールを参照します。

于 2010-01-15T21:36:37.543 に答える
0
Private Sub kdgToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles kdgToolStripMenuItem.Click
    Dim sms = (sender.GetCurrentParent()).SourceControl.name
    MsgBox(sms)
End Sub

'///もっと早く

于 2014-10-10T08:26:40.520 に答える