解决点击事件的生成按钮

时间:2012-05-11 07:54:46

标签: c#

我有一个类,它根据我的数据库创建包含控件的面板。它创建了一个面板,每个面板上都有一个按钮,每行都在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;
  }
}

2 个答案:

答案 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
}