我将单个上下文菜单附加到多个文本框。所以,我需要获取用于显示上下文菜单的控件名称/引用。
下面的是我的上下文菜单的示例图像:
以下是绿色标记“粘贴”项目点击事件的代码:
Dim objTSMI As ToolStripMenuItem
Dim objCMS As ContextMenuStrip
Dim objTxtBox As System.Windows.Forms.TextBox
objTSMI = CType(sender, ToolStripMenuItem)
objCMS = CType(objTSMI.Owner, ContextMenuStrip)
objTxtBox = CType(objCMS.SourceControl, System.Windows.Forms.TextBox)
If Clipboard.ContainsText(TextDataFormat.Text) = True Then
objTxtBox.SelectedText = Clipboard.GetText(TextDataFormat.Text)
End If
它非常好。
但下面是我的红色标记“页面计数”项目点击事件的代码:
Dim objTSMI As ToolStripMenuItem
Dim objCMS As ContextMenuStrip
Dim objTxtBox As System.Windows.Forms.TextBox
objTSMI = CType(sender, ToolStripMenuItem)
objCMS = CType(objTSMI.Owner, ContextMenuStrip)
objTxtBox = CType(objCMS.SourceControl, System.Windows.Forms.TextBox)
MessageBox.Show(objTxtBox.Name)
但是上面会抛出以下错误:
Unable to cast object of type 'System.Windows.Forms.ToolStripDropDownMenu' to type 'System.Windows.Forms.ContextMenuStrip'.
这是错误的屏幕截图:
所以,我无法弄清楚问题是什么。
任何帮助都将受到高度赞赏
答案 0 :(得分:2)
如果您检查this C# thread接受的答案,则说明这是一个错误。这里提供的解决方法使用私有变量将var labelWithTime = "label " + Date.now();
console.time(labelWithTime);
// Do something
console.timeEnd(labelWithTime);
存储在SourceControl
的{{1}}事件上。我转换为VB.NET并使用Opening
的{{1}}而不是使用变量。然后,您可以引用ContextMenuStrip
属性而不是错误的Tag
属性:
ContextMenuStrip