动态ContextMenuStrip

时间:2013-09-28 08:41:18

标签: .net vb.net winforms contextmenu richtextbox

在我的应用程序中,我有3个RichTextboxes,我只创建了一个ContextMenuStrip,因为我不喜欢将相同的contextmenu和所有上下文菜单选项的相同代码重复3次以与其他2个Richs一起使用,问题是我不知道如何为三个RichTextBox使用相同的ContextMenu。

例如,ContextMenuStrip的一个选项是“ 清除文本 ”,然后在程序中我需要指定RichTextbox对象名来清除文本:

Private Sub MenuItem_Clear_Text_Click(sender As Object, e As EventArgs) _
Handles MenuItem_Clear_Text.Click

    RichTextBox_Affix.Clear()

End Sub

我如何以动态方式处理该子组中其他richtextbox的clear方法?

(我不想同时清除3个richtextbox的文本,我需要知道哪个RichTextBox打开了Contextmenu来清除只有那个RichTextBox的文本)

我试图找到有关哪个RichTextBox称为contextmenu的必要信息来处理仅用于该RichTextBox的contextmenu过程,但我在发件人中找到了任何内容,或者在contextmenu CLICK事件子中找到了“e”变量。< / p>

1 个答案:

答案 0 :(得分:0)

您可以从给定项目中获取ContextMenuStrip,并从中获取相关控件(RichTextBox)。示例代码:

Private Sub MenuItem_Clear_Text_Click(sender As Object, e As EventArgs) _
Handles MenuItem_Clear_Text.Click

    Dim curContextMenu As ContextMenuStrip = DirectCast(DirectCast(sender, ToolStripItem).Owner, ContextMenuStrip)
    Dim curRTB As RichTextBox = DirectCast(curContextMenu.SourceControl, RichTextBox)
    curRTB.Clear()

End Sub