0

我有一个类可以根据我的数据库创建带有控件的面板。它创建一个面板,每个面板上都有一个按钮,数据库中的每一行。如何处理一个特定按钮以进行点击事件?

我是个菜鸟,也许有点过头了,但你不会学会在浅水中游泳;)任何帮助表示赞赏!

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;
  }
}
4

2 回答 2

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
}
于 2012-05-11T08:22:02.227 回答
1

您需要一个与单击按钮引发的事件相匹配的方法。

IE)

void Button_Click(object sender, EventArgs e)
{

    // Do whatever on the event
}

然后您需要将点击事件分配给该方法。

p1.infoBtn.Click += new System.EventHandler(Button_Click);

希望这可以帮助。

于 2012-05-11T08:04:36.203 回答