#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, ...)
{
...
}