2015-08-20 5 views
3

Кнопка не будет называть ее событием.Динамически созданная кнопка, не вызывающая событие C#

называется в другой кнопки:

placeHolder.Controls.Add(CreateButton()); 

создать кнопку:

public Button CreateButton() 
{ 
    Button btn = new Button(); 
    btn.ID = "id"; 
    btn.Text = "some text"; 
    btn.Attributes.Add("onclick", "return false;"); 
    btn.Click += new EventHandler(btn_Click); 
    return btn; 
} 

Функциональность:

private void btn_Click(object sender, EventArgs e) 
{ 
    // do something. 
} 

места отладки линии, чтобы найти источник, это просто не вызывая btn_Click() при нажатии. Чего не хватает?

+1

вы пытались просто добавить метод к EventList как: 'btn.Click + = btn_Click;'? –

+0

Вы должны добавить свою кнопку при каждой загрузке страницы, в противном случае ASp.NET, что является источником события, которое было уволено – Andrei

+0

Не работает Себастьян, Андрей - Я не хочу, чтобы кнопка там, если не нажата другая кнопка, поэтому он помещается только в местозаполнитель на другом нажатии кнопки. – thatguy

ответ

4

Этот код предотвращает событие щелчка от стрельбы:

btn.Attributes.Add("onclick", "return false;"); 

Удалить этот код, или изменить его на:

btn.Attributes.Add("onclick", "return true;"); 

EDIT

Я попробовал этот код и его работал правильно. PlaceHolder в form тег и runat атрибут server:

protected void Page_Load(object sender, EventArgs e) 
{ 
    if(!IsPostBack) 
     placeHolder.Controls.Add(CreateButton()); 
} 

public Button CreateButton() 
{ 
    Button btn = new Button(); 
    btn.ID = "id"; 
    btn.Text = "some text"; 
    btn.Click += btn_Click; 
    return btn; 
} 

private void btn_Click(object sender, EventArgs e) 
{ 

} 
+0

Я помещал это, чтобы предотвратить отправку сообщения от обстрела, удаление/изменение на истину все равно не срабатывает: btn_Click – thatguy

+0

@thatguy see может редактировать ответ. Я тестировал это с помощью VS2013. –

+0

Спасибо, я изменил его, чтобы загрузить через Page_Load, а не через другую кнопку, и просто установите его свойство видимости в кнопке - Accepted. – thatguy