2013-09-28 116 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