我正在尝试创建一个表单,当我单击dataGridView中的一行时,该表单将打开。它包含一个开始日期和一个结束日期。当新表单打开时,我想用datagridview中的值填充两个dateTimePicker(dateTimePickerStartDate和dateTimePickerCendDate(。
当我点击一个单元格时,我有一个方法:
private void dataGridViewActivityHire_CellClick(object sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex != -1)
{
DataGridViewRow view = dataGridView1.Rows[e.RowIndex];
Form2 newForm = new Form2 ();
newForm.dateTimePickerStartDate.Value = (DateTime)view.Cells[4].Value;
newForm.dateTimePickerEndDate.Value = (DateTime)view.Cells[5].Value;
edit.Show();
}
}
这引发错误System.InvalidCastException: 'Specified cast is not valid.'
我尝试了一种不同的方法,用form2声明DateTime变量,但我无法实现:
public DateTime StartDate { get; set; }
public DateTime EndDate { get; set; }
我设置了dateTimePickers:的值
dateTimePickerStartDate.Value = StartDate;
dateTimePickerEndDate.Value = EndDate;
单击行时,如何在另一个表单上填充dateTimePicker?
网格单元格中的日期是string
。假设字符串值是有效日期,则需要将该string
转换为DateTime
对象,以设置第二种形式的DateTimePicker
一种方法是使用DateTime.TryParse
方法。例如,如果单元格四(4(和五(5(中的string
是有效的日期-时间字符串,则可以将其解析为DateTime
对象,如…
DataGridViewRow view = dataGridView1.Rows[e.RowIndex];
Form2 newForm = new Form2();
if (DateTime.TryParse(view.Cells[4].Value.ToString(), out DateTime startDate)) {
newForm.dateTimePickerStartDate.Value = startDate;
}
else {
// date-time string is not a valid date time string
}
if (DateTime.TryParse(view.Cells[5].Value.ToString(), out DateTime endDate)) {
newForm.dateTimePickerEndDate.Value = endDate;
}
else {
// date-time string is not a valid date time string
}
newForm.Show();