2017-06-19 13 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はフォームでもないため、フォームデザイナーでもありません。

あなたが実際に言っていることは、あなたがClickイベントあなたがFrm_Main_Copyで処理したいその後、最初のステップは、SharedとしてCat000x86_64Appを宣言しないことですTooStripMenuItemが含まれているToolStripMenuAppのインスタンスを持っているということである場合。イベントあなたが扱っている、そのクラスにはWithEvents変数がありませんので、何Handles句がないことを

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

注:Frm_Main_Copyは、そのイベントを処理できる方法を宣言する必要があります。

Frm_Main_Copyは、ToolStripMenuAppの適切なインスタンスにアクセスできる必要があります。私たちが提供された情報に基づいて、それを行うために最善の方法と言うことは不可能ですが、それは、このような単純なものかもしれません:

Dim tsma As New ToolStripMenuApp 

あなたは、適切なイベントのハンドラとして、あなたの方法を登録します。

AddHandler tsma.Cat000x86_64App.Click, AddressOf IsClicked 

AddHandlerを使用する場合は、いずれかのオブジェクトが終了したらRemoveHandlerを必ず使用してください。私はあなたがこの情報に基づいていくつかの読書をすることをお勧めします。

+1

実際、 'Frm_Main_Copy'はデザイナーフォームを持つフォームです。あなたの答えは役に立ちます... – Karuntos

関連する問題