单击数据网格视图单元格时,如何修改另一个窗体上的日期-时间选择器



我正在尝试创建一个表单,当我单击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();

最新更新