Я играю вокруг abit с winforms и его элементами управления и только что открыл, как делать custommade buttonclicks. Однако есть проблема. У меня есть цикл, который перебирает список элементов, и если появляется условие - я создаю кнопку, которая выведет gridview.Захват правой кнопки события click
public void draw(ref Panel inputPanel) //draws the eventline
{
int stepCounter = 0;
for (int i = 0; i < DaysList.Count-1; i++)
{
Button b1;
if (DaysList[i].Elements.Count > max)
{
b1 = new Button(); //Create the box
b1.Width = 120;
b1.Height = 40; //Set width and height
b1.Location = new Point(stepCounter + 35, 70); //Location
inputPanel.Controls.Add(b1); //
b1.Text = "Check event date in grid";
b1.Show();
b1.BringToFront();
b1.Click += new EventHandler((sender, e) => btn_Click(sender, e, DaysList[i].Elements));
stepCounter += 200;
}
}
}
Это был мой метод для создания кнопок и события click для моего условия. Функция, которая передается EventHandler выглядит следующим образом:
public void btn_Click(object sender, EventArgs e, List<EventElement> inputElems)
{
Button button = sender as Button;
DataGridForm window = new DataGridForm(inputElems);
window.Show();
}
public class EventElement
{
public EventElement()
{
}
public int Count{get;set;}
public string Date{get;set;}
}
clickpart события это хорошо, но всякий раз, когда я нажимаю на кнопки породил, я получаю неверные данные в GridView. В качестве примера : цикл создал для меня четыре кнопки, и они представлены на прямой линии на форме. Но всякий раз, когда я нажимаю одну из кнопок - dosnt matter, какая из них, кнопка всегда возвращает данные последней порожденной кнопки. Более яркий пример: позволяет сказать, что у нас есть список inputElems выглядит следующим образом:
inputElems [0] .Count -> 2644
inputElems [1] .Count -> 2131
inputElems [2] .Count -> 8467
inputElems [3] .Count -> 5462
Когда я сейчас нажимаю вторую кнопку, вход в список параметров вторых кнопок должен иметь значения (отправитель, e, 2131), правильно? но по какой-то причине последний аргумент получает то же, что и 4-й элемент в списке, хотя я вызываю вторую созданную кнопку.
Я полагал, что он имеет какое-то отношение ко мне, всегда вызывающее последнее добавленное button_click к обработчику события кнопки, если да, то как мне вызвать разные клики из EventHandler?
Мне кажется, что проблема заключается в '' ctor' для DataGridForm', где этот код? –
Проблема лежит в inputElems, не получая правильные значения, а не в datagrid –
И что *** точно *** вы подразумеваете под этим? Это неправильная ценность? Если да, отредактируйте свой вопрос, какое значение вы получите, и какое значение вы ожидаете. Понимаете, такая информация действительно была бы полезной для решения проблемы. –