我有dataGridView1_CellContentClick
检查是否单击了特定单元格。
点击它后会创建一个新的Form
。
在此表单上有dateTimePicker
和Button
。
单击该按钮时,我希望将dateTimePicker
的值添加到dataGridView
中的正确行和单元格中。
这是我到目前为止所拥有的。
private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
if (e.ColumnIndex == dataGridView1.Columns[16].Index && e.RowIndex >= 0)
{
int numberRow = Convert.ToInt32(e.RowIndex);
var form3 = new Form();
form3.Width = 400;
form3.Height = 200;
form3.Text = "How long will you have the item?";
form3.Show();
DateTimePicker howLongPick = new DateTimePicker();
howLongPick.Width = 150;
howLongPick.Value = DateTime.Today.AddDays(7);
howLongPick.Location = new Point(100, 50);
Button addDate = new Button();
addDate.Location = new Point(135, 100);
addDate.Text = "OK";
form3.Controls.Add(addDate);
form3.Controls.Add(howLongPick);
CheckoutUntil = howLongPick.Text;
addDate.Click += new EventHandler(addDateClicked);
dataGridView1.Rows[numberRow].Cells[4].Value = true;
newHistoryRow["Action"] = "Checkout";
sIMSDataSet.Tables["History"].Rows.Add(newHistoryRow);
historyTableAdapter.Update(sIMSDataSet);
}
}
private void addDateClicked(object sender, EventArgs e, int numberRow)
{
dataGridView1.Rows[numberRow].Cells[15].Value = CheckoutUntil;
}
我想做的是将numberRow
传递给addDate.Click += new EventHandler(addDateClicked);
但我似乎无法弄明白该怎么做。
答案 0 :(得分:2)
简单地避免创建方法addDateClicked
,只需这样内联:
int numberRow = Convert.ToInt32(e.RowIndex);
// code commented out
addDate.Click += (s, e2) =>
{
// you can use `numberRow` in here now.
dataGridView1.Rows[numberRow].Cells[15].Value = CheckoutUntil;
};