我有一个带有行的TableLayoutPanel(tlp)。我用一个按钮手动添加行。我在最后一行下面创建的每一行都有一个按钮,该按钮将从tlp中删除该行。这是代码:
private void btnTSatirEkle_Click(object sender, EventArgs e)
{
tlpTDersRows = tlpTDers.RowCount;
tlpTDers.RowCount++;
DateTimePicker dtp = new DateTimePicker();
dtp.Name = "dtpTR" + (tlpTDersRows).ToString();
DateTimePicker dtp2 = (DateTimePicker)tlpTDers.Controls["dtpTR" + (tlpTDersRows - 1).ToString()];
dtp.Value = dtp2.Value.AddDays(1);
dtp.Dock = DockStyle.Fill;
tlpTDers.Controls.Add(dtp, 0, tlpTDersRows);
ComboBox comb = new ComboBox();
comb.Name = "cbxTR" + (tlpTDersRows).ToString();
comb.Dock = DockStyle.Fill;
comb.Items.AddRange(devamDur);
tlpTDers.Controls.Add(comb, 1, tlpTDersRows);
TextBox txtr = new TextBox();
txtr.Name = "txtTR" + (tlpTDersRows).ToString();
txtr.Dock = DockStyle.Fill;
txtr.Multiline = true;
tlpTDers.Controls.Add(txtr, 2, tlpTDersRows);
oldX = btnTSatirEkle.Location.X;
oldY = btnTSatirEkle.Location.Y;
Button buttonNew = new Button();
buttonNew.Name = "btnDelTR" + (tlpTDersRows - 1).ToString();
buttonNew.Text = "-";
buttonNew.Location = new Point(oldX, oldY);
buttonNew.Size = btnTSatirEkle.Size;
this.Controls.Add(buttonNew);
buttonNew.Click += new EventHandler(SatirSil); //I get error here, even I write SatirSil(sender, e, tlpTDersRows - 1)..
btnTSatirEkle.Location = new Point(644, tlpTDers.Controls["dtpTR" + tlpTDersRows.ToString()].Location.Y + 12);
tlpTDersRows++;
}
private void SatirSil(object sender, EventArgs e, int rowNo)
{
//codes
}
我想将行号作为参数发送到SatirSil方法(当我单击buttonNew_Click事件时将调用它)。
有任何想法吗?
最佳答案
更改:
buttonNew.Click += new EventHandler(SatirSil);
至
buttonNew.Click += new EventHandler((snd, ev)=>SatirSil(snd,ev,rowno));
或使用您自己的变量(即
tlpTDersRows
),可能是这样的:buttonNew.Click += new EventHandler((snd, ev)=>SatirSil(snd,ev,tlpTDersRows-1));