Добавить функцию _Click в сгенерированные WinForms кнопки

#c# #winforms #.net-core-3.1 #tablelayoutpanel

#c# #winforms #.net-core-3.1 #табличная панель

Вопрос:

У меня есть вопрос о добавлении функции к сгенерированной кнопке. Я хочу иметь возможность перейти к другому файлу .cs, нажав кнопку.

Точное событие:

 PartnerInfo partnerInfo = new PartnerInfo();
partnerInfo.Show();
 

Кнопка генерируется в ‘TableLayoutPanel’ в каждой строке. Код, который я сейчас использую для таблицы:

 //get a reference to the previous existent 
RowStyle temp = MyPartnersPanel.RowStyles[MyPartnersPanel.RowCount - 1];
//increase panel rows count by one
MyPartnersPanel.RowCount  ;

//add a new RowStyle as a copy of the previous one
MyPartnersPanel.RowStyles.Add(new RowStyle(temp.SizeType, temp.Height));
//add your controls
MyPartnersPanel.Controls.Add(
  new TextBox() {
    Text = PartnerName, ReadOnly=true }, 0, MyPartnersPanel.RowCount - 1);
    MyPartnersPanel.Controls.Add(new TextBox() { Text = PartnerLevel, ReadOnly = true }, 1, MyPartnersPanel.RowCount - 1);
    MyPartnersPanel.Controls.Add(new TextBox() { Text = PartnerGoal, ReadOnly = true }, 2, MyPartnersPanel.RowCount - 1);
    MyPartnersPanel.Controls.Add(new TextBox() { Text = WorkoutPerWeek, ReadOnly = true }, 3, MyPartnersPanel.RowCount - 1);
    MyPartnersPanel.Controls.Add(new Button() { Text = " ", BackColor = Color.Black, ForeColor = Color.White, Height = 29, }, 4, MyPartnersPanel.RowCount - 1);
)};
 

Любая помощь очень ценится.
И я работаю в .NET Core 3.1, если это имеет значение

Комментарии:

1. Вы имеете в виду назначить метод событию нажатия кнопки? btn.Click = ClickEventMethod

2. Вам нужно выполнить два шага: Кнопка newButton = новая кнопка() { Текст = » «, BackColor = Цвет. Черный, ForeColor = Цвет. Белый, высота = 29, }, 4, MyPartnersPanel. Количество строк — 1) MyPartnersPanel. Элементы управления. Добавить(newButton); newButton.Click = новая система. Обработчик событий (this.button1_Click);

3. Добавил ваш код и создал событие button1_Click, я получаю сообщение об ошибке «4, MyPartnersPanel. RowCount — 1» Я заметил, что вы не закрываете 1. так что попробуйте с и без, и, похоже, это просто выдает две разные ошибки.. Без этого ожидается «;» три раза? С «;» есть только 2 «;» идентификатор «}»ожидается imgur.com/a/DIHg8AY @jdweng

4. Вам нужен метод щелчка, такой как private void button1_Click(отправитель объекта, EventArgs e) { } Вот исправленный код: Кнопка newButton = новая кнопка() { Text = » «, BackColor = Color . Черный, ForeColor = Цвет. Белый, высота = 29}; MyPartnersPanel. Элементы управления. Добавить(newButton, 4, MyPartnersPanel. Количество строк — 1);

5. Ах да, теперь это работает! Спасибо за помощь!

Ответ №1:

Разделите инструкцию, в которой вы создаете кнопку, на две части, чтобы вы могли получить доступ к кнопке:

 MyPartnersPanel.Controls.Add(new Button() { Text = ...
 

Должно быть:

 Button btn  new Button() {Text = ...};
MyPartnersPanel.Controls.Add(btn);

// attach an event handler:
btn.Clicked  = this.ButtonClickedEventHandler;

private void ButtonClickedEventHandler(object sender, ...)
{
    ...
}