这是我上一个问题的跟进问题。您可以找到它here。
我终于解决了上一个问题后遇到了另一个问题,当我分配按钮以将值添加到DataGrid中的新行时,整个单元格将处于编辑模式,直到单击其他单元格并将其填充和/或分页直到行尾(很显然这行不通),然后它将结束编辑模式。我正在使用dataGridView.BeginEdit(true);
开始编辑模式,以便可以将值解析到文本框中(请参阅我的上一个问题)。因此,如果我插入另一个值并按下按钮,则新值将替换先前插入的旧值,因为它当前仍处于编辑模式。我试图使用dataGridView.EndEdit();
,dataGridView.EndEdit(DataGridViewDataErrorContexts.Commit);
,cell.DataGridView.EndEdit()
和cell.DataGridView.EndEdit(DataGridViewDataErrorContexts.Commit);
,但显然并没有结束编辑模式:(我想要的是,当我按下按钮时,文本框内的值将被插入到第一文本框列中(此列已起作用)。然后,我不必单击或填充另一列即可结束编辑模式。因此,我只需要在文本框中输入任何内容,然后仅按下按钮,直到我想停止即可。之后,我开始填写另一列。有谁知道如何解决这个问题?编辑1:您看到区别了吗?查看红色圆圈,最上面的圆圈当前处于编辑模式(因为它在箭头后面带有*)。最下面的一个不在编辑模式(我是通过从组合框中选择一项来手动完成的。)>这是我上一个问题所要求的代码:
private void button1_Click(object sender, EventArgs e) { this.surat_jalanDataGridView.AllowUserToAddRows = true; string tokNum = this.textBox1.Text; if (this.textBox1.Text != "") { foreach (DataGridViewRow sjRow in this.surat_jalanDataGridView.Rows) { int RowIndex = surat_jalanDataGridView.RowCount - 1; DataGridViewRow R = surat_jalanDataGridView.Rows[RowIndex]; DataTable table = new DataTable(); DataRow newRow = table.NewRow(); table.Rows.Add(newRow); DataGridViewCell cell = R.Cells[2]; this.surat_jalanDataGridView.CurrentCell = cell; this.surat_jalanDataGridView.BeginEdit(true); R.Cells[2].Value = tokNum; cell.DataGridView.EndEdit(DataGridViewDataErrorContexts.Commit); } } this.surat_jalanDataGridView.EndEdit(DataGridViewDataErrorContexts.Commit); }
编辑2:因此,我将surat_jalan从数据源拖放到Windows窗体中。然后它会自动变为属性名称为
surat_jalanDataGridView
的数据网格,数据源为surat_jalanBindingSource
这是我上一个问题的跟进问题。你可以在这里找到它。我终于解决了上一个问题后,又遇到了另一个问题,当我分配按钮以将值添加到...
很抱歉延迟。在了解了如何设置与DataGridView的绑定之后,我可以为您提供有关如何编辑与网格绑定的数据的更好指导。当您将表从Visual Studio的数据源视图中拖放到DataGridView上时,Visual Studio会为您做几件事。重要的是,您至少要了解已完成操作的基础知识,以便了解如何处理向前移动的数据。ThisMSDN文章如何设置从Visual Studio绑定到Windows窗体控件。最后一部分介绍您在做什么。最后一句话“ DataGridView控件现在绑定到您拖到它的表上。一个DataSet,TableAdapter和BindingSource出现在组件托盘中。”
我要使Cell退出EditMode的方法是切换CurrentCell.ReadOnly属性。