2016-05-25 10 views
-5

実行時に新しいボタンを動的に作成してフォームに追加する必要があります。新しいボタンをクリックすると、何かをする必要があります。私は別のクリックイベント内から新しいボタンを作成していた場合、この場合には、動的に追加されたボタンをクリックしたときの操作

Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click 
    Process.Start("") 
End Sub  

をしかし:私は、設計時にフォーム上に描画し、通常のボタンについては、私はちょうどこのような何かをするだろうボタンをクリックしたときに、機能を割り当てる方法がわかりません。

+0

質問はあまり明確ではありませんが、あなたは['AddHandler'](https://msdn.microsoft.com/en-us/library/7taxzxka.aspx)を探しています。 'AddHandler Button4.Click、Sub(s、e)Process.Start(" ")'を実行します。 – Mark

+0

私はタグを修正する質問を更新し、あなたがより明確に求めているものを作りました。しかし、あなたが本当に求めていたことを言うのは難しいので、私はいくつかの仮定をしなければなりませんでした。あなたの実際の質問を何らかの形で伝えていない場合、私の編集を修正してください。 –

+0

私の悪い英語を申し訳ありません。 AddHandlerは動作していますが、永続的ではありません。私が新しいボタンを作成するとき、私はプログラムを再起動するときよりも、ボタンはまだそこになります。それは可能ですか? – Touyoo

答えて

2

新しいコントロールを作成する場合は、フォームのControlsコレクション(またはフォームのコンテナコントロールの1つ)に追加する必要があります。例えば:

Dim myButton As New Button() 
Me.Controls.Add(myButton) 

ただし、クリックイベントをキャプチャし、処理するために、あなたは宣言し、イベントハンドラメソッドをしてからAddHandlerキーワードを使用してそれを配線する必要があります。たとえば、あなたがこのような方法で持っていた場合、:

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

を次にあなたがこのようなボタンのClickイベントのハンドラとして追加することができます

AddHandler myButton.Click, AddressOf MyClickHandler 

しかし、あなたがそれを行ういつでも、あなたがすべきそれはもはや必要だ後、あなたはこのように、イベントからハンドラを削除しないことを確認してください:

RemoveHandler myButton.Click, AddressOf MyClickHandler 

VB.NETもその便利WithEventsキーワードを提供し、あなたのニーズに応じて、あなたが使いやすくなるかもしれません。

関連する問題