2016-05-25 3 views
-5

Мне нужно, в коде, создать динамическую динамическую кнопку во время выполнения и добавить ее в мою форму. Когда я нажимаю новую кнопку, мне нужно что-то сделать. Для нормальной кнопки, что я рисую на форме во время разработки, я бы просто сделать что-то вроде этого:Как сделать что-то при нажатии динамически добавленной кнопки

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

Но, в этом случае, когда я создаю новую кнопку внутри события нажатия другого , я не знаю, как назначить ему функциональность, когда она нажата.

+0

Вопрос не очень ясен, но я _think_ вы ищете ['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 вашей формы (или в один из элементов управления контейнера в вашей форме). Например:

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 ключевое слово, которое, в зависимости от ваших потребностей, может быть проще для вас.

Смежные вопросы