2016-07-12 3 views
-1
 btnName1 = new Button(); 
     counter++; 
     //Start setting of Button 
     btnName1.Location = new Point(47, 35 + a); 
     btnName1.Size = new Size(132, 59); 
     btnName1.FlatStyle = FlatStyle.Popup; 
     btnName1.Text = textBox1.Text; 
     btnName1.Name = "btn" + counter.ToString(); 
     btnName1.BackColor = Color.White; 
     btnName1.ForeColor = Color.Black; 
     panel1.Controls.Add(btnName1); 
     a += btnName1.Size.Height + 2; 
     btnName1.Click += BtnName1_Click; 

Я написал этот код для создания новой кнопки. Когда я нажимаю кнопку «Добавить», этот код запускается, и при каждом нажатии кнопки «Добавить» мы можем создать новую кнопку. Но моя проблема в этом Как я могу установить дескриптор клика для каждой кнопки? Я имею в виду, когда я нажимаю на каждой кнопке, они показывают свой текст для меня , и я написал этот код, чтобы сделать тексты разные:Установить ручку кнопки в C#

btnName1.Text = textBox1.Text;

+0

Это не ясно, что это ваша проблема. Этот код кажется прекрасным. Какую ошибку или проблему вы не можете решить с помощью этого кода? – Steve

ответ

1

Вы не отправлял свой код события, но, как Стив упоминается в его комментарий (который, как представляется, был удален), вы можете использовать аргумент отправителя, чтобы получить конкретную кнопку, которая была нажата. Что-то вроде следующего должно быть то, что вы после:

private void BtnName1_Click(object sender, EventArgs e) 
{ 
    //Access the text with: (sender as Button).Text 

    //Example: Write this button's text to the debug output window 
    Debug.WriteLine((sender as Button).Text); 
} 

Просто будьте осторожны, что в моем конкретном примере, вы только подписавшись на Button к этому событию.

0

Предпочитаемый способ это то, что вы положили до сих пор

btnName1.Click += BtnName1_Click; 

... 

private void BtnName1_Click(object sender, EventArgs e) { 
    // Button which has been clicked 
    Button button = sender as Button; 
    //TODO: put relevant code here 
    ... 
} 

Однако, вы можете назначить для каждой кнопки свой собственный обработчик события:

btnName1.Click += (s, e) => { 
    Button button = s as Button; 
    //TODO: put relevant code here 
    ... 
}; 
+0

Интересно. Назначение отдельного события для каждой кнопки выглядит довольно аккуратно :) –

+0

@DangerZone: иногда это полезно: код всех кнопок (его название, местоположение и т. Д., А также * обработчики событий *) находится в одном месте. Недостатком метода является то, что вы не можете отменить назначение обработчика события. –

+0

А, это имеет смысл ... На самом деле не думал о непривязанности. Я полагаю, что до тех пор, пока вам это не нужно, это довольно простой способ сделать это. (который, как я полагал, будет иметь место в большинстве ситуаций) –

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