2013-09-28 68 views
0

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

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

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

    RichTextBox_Affix.Clear() 

End Sub 

我怎么可以处理一个动态的方式在其他richtextboxes的子项中清除方法?

(我不想清除3个richtextboxes文本的同时,我需要的是知道哪些RichTextBox中打开文本菜单,以清除文本仅在RichTextBox中)

我已经试图找到关于哪个RichTextBox称为contextmenu来处理仅用于该RichTextBox的contextmenu过程的必要信息,但我在发件人或“CLICK事件子”的context菜单中找到了任何“e”变量。

回答

0

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

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 
+1

谢谢,我已经简化所有一线“sender.owner.SourceControl.Clear()”,因为我管理不同的用户控件,所以我不会投RichTextBox的,如果该行不会工作相同的功效或东西只是告诉我,再次感谢 – ElektroStudios

+1

@ElektroHacker我的代码依赖于正确的类型。你的版本让VB.NET承担很多事情。您的版本无法与'Option Strict On'一起使用(推荐使用的东西)。我无法给你确切的数字说明这将如何影响性能,但任何假设都与时间要求相关(在这种情况下不是太重要,这是真的)。总之:“正确的方式”就是我写的,但你所做的事情基本上是最大化VB允许性(相对于其他语言如C#),在这种情况下,我认为这不是太糟糕。做你想做的 :) – varocarbas