2017-06-19 55 views
0

我想在另一個類中激發事件。 而我的問題是我不知道如何做到這一點。在另一個類中處理來自控件的事件

我試圖用Inherits語句來我的表格,並添加我的類名給它,和它的作品,我希望:

Public Class Frm_Main_Copy 

    Inherits ToolStripMenuApp 
    'I have a ToolStripMenu that has declared before on my class and it sounds like this: 
    'Public Shared WithEvents Cat000x86_64App As ToolStripMenuItem 
    ... 
    Private Sub IsClicked(ByVal sender As Object, ByVal e As EventArgs) Handles Cat000x86_64App.Click 

    End Sub 

End Class 

但搞砸了設計師的形式(返回致命錯誤)和我應該刪除Inherits聲明和其他聲明。

試圖充當表單設計腳本(試圖把這個代碼我的課):

Friend WithEvents BlahBlah As RadioButton 'For example 

它沒有工作,

聲明對我的類變量,並沒有工作太

搜索在互聯網上,它很可能比我想象的更復雜...

任何人都可以幫助嗎?任何幫助表示讚賞。

回答

0

表單除非直接或間接繼承Form類,否則不是表單。你不能繼承任何不是本身就是表單的類型,並且期望你的類型是一個表單。使用該代碼,如果ToolStripMenuApp不是表單,那麼Frm_Main_Copy也不是表單,因此沒有表單設計器。

如果你實際上說的是,你必須包含要在Frm_Main_Copy來處理TooStripMenuItemClick事件那麼第一步就是沒有聲明Cat000x86_64AppSharedToolStripMenuApp的一個實例。 Frm_Main_Copy需要聲明能夠處理事件的方法:

Private Sub IsClicked(ByVal sender As Object, ByVal e As EventArgs) 
    '... 
End Sub 

注意,沒有Handles條款,因爲在這一類,它的情況下,您正在處理沒有WithEvents變量。

接下來,Frm_Main_Copy必須有權訪問相應的ToolStripMenuApp實例。這是不可能的我們來說說如何最好根據所提供的信息,要做到這一點,但它可能是這樣簡單:

Dim tsma As New ToolStripMenuApp 

然後你註冊你的方法作爲適當的事件處理程序:

AddHandler tsma.Cat000x86_64App.Click, AddressOf IsClicked 

如果您使用AddHandler,請確保在完成任一對象時使用RemoveHandler。我建議你根據這些信息做一些閱讀。

+1

其實'Frm_Main_Copy'是一個具有設計器形式的表單。你的答案是有幫助的... – Karuntos

相關問題