我有一个类,它根据我的数据库创建包含控件的面板。它创建了一个面板,每个面板上都有一个按钮,每行都在DB中。如何解决一个特定按钮以进行点击事件?
我是一个新手,也许是我的头上,但你不学会在浅水中游泳;) 任何帮助表示赞赏!
while (myDataReader.Read())
{
i++;
Oppdrag p1 = new Oppdrag();
p1.Location = new Point (0, (i++) * 65);
oppdragPanel.Controls.Add(p1);
p1.makePanel();
}
class Oppdrag : Panel
{
Button infoBtn = new Button();
public void makePanel()
{
this.BackColor = Color.White;
this.Height = 60;
this.Dock = DockStyle.Top;
this.Location = new Point(0, (iTeller) * 45);
infoBtn.Location = new Point(860, 27);
infoBtn.Name = "infoBtn";
infoBtn.Size = new Size(139, 23);
infoBtn.TabIndex = 18;
infoBtn.Text = "Edit";
infoBtn.UseVisualStyleBackColor = true;
}
}
答案 0 :(得分:1)
您需要一个方法来匹配通过单击按钮抛出的事件。
即。)
void Button_Click(object sender, EventArgs e)
{
// Do whatever on the event
}
然后,您需要将click事件分配给方法。
p1.infoBtn.Click += new System.EventHandler(Button_Click);
希望这有帮助。
答案 1 :(得分:1)
您可以在创建按钮时为按钮添加事件处理程序。您甚至可以为每个按钮添加一个唯一的CommandArgument
,以便区分一个按钮与另一个按钮。
public void makePanel()
{
/* ... */
infoBtn.UseVisualStyleBackColor = true;
infoBtn.Click += new EventHandler(ButtonClick);
infoBtn.CommandArgument = "xxxxxxx"; // optional
}
public void ButtonClick(object sender, EventArgs e)
{
Button button = (Button)sender;
string argument = button.CommandArgument; // optional
}