【发布时间】:2011-05-25 17:41:17
【问题描述】:
我有一个包含两列的 DataGridView。单击第一列中的单元格时,会显示一个 OpenFileDialog,当我选择一个文件时,第二列中的单元格值将设置为选定的文件名。代码如下:
private void dataGridView1_CellContentClick(
object sender, DataGridViewCellEventArgs e)
{
if (e.ColumnIndex == 0)
{
SelectFile(e.RowIndex);
}
}
private void SelectFile(int rowIndex)
{
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
dataGridView1.Rows[rowIndex].Cells[1].Value =
openFileDialog.FileName;
}
}
这可行,但我希望在设置单元格值时添加一个新行。当我手动编辑单元格时会发生这种情况,该行进入“编辑”状态并在下面添加一个新行。当我以编程方式设置单元格值时,我希望同样的事情发生。
[编辑]
当我的表单第一次显示时,DataGridView 是空的,唯一显示的行是带有 (* 符号 - IsNewRow 为真) 的行。当我手动编辑该行中的一个单元格时,它会进入编辑状态(铅笔符号)并添加一个新的空行。当我使用上面的代码时,这不会发生。该行保持为 IsNewRow(* 号),不添加新行。
【问题讨论】:
-
我试图用 Add 方法做到这一点,但行被添加到第一个位置。我能想到的唯一解决方案是添加新行,然后将值与当前行交换。 Probaj, možda uspe :)
-
是的,我可能必须这样做,但即使我用代码编辑第一行,添加新行似乎也是合乎逻辑的。 Hvala na komentaru。
-
是的,显然这是DataGridView的一个“特性”(不是说bug)。也许这是有原因的。尝试在msdn上询问。斯雷奇诺!
标签: c# winforms datagridview