将焦点设置为数据网格视图文本框列单元格
本文关键字:文本 视图 单元格 网格 数据网 焦点 设置 数据 | 更新日期: 2023-09-27 18:08:17
我有一个类型为datagridview文本框列的gridview,其中有以下列:
SrNo | Description | HSNCode | Qty | Rate | Amount
我在程序中自动生成金额,但我想检查用户是否已输入金额字段而没有在"Rate"中输入数据,然后我想将焦点设置回程序中的"Rate"字段:
我尝试了以下代码:
private void grdData_CellLeave(object sender, DataGridViewCellEventArgs e)
{
if (e.ColumnIndex == 4)
{
if(grdData.Rows[e.RowIndex].Cells[4].Value== null)
{
grdData.CurrentCell = grdData.Rows[e.RowIndex].Cells[4];
}
}
}
但是代码不能工作。
如何将焦点切换到"金额"之前的字段?
请帮助。
尝试:
private void grdData_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
{
if (e.ColumnIndex == 5)
{
if(grdData.Rows[e.RowIndex].Cells[3].Value.Equals(""))
{
grdData.ClearSelection();
grdData.Rows[e.RowIndex].Cells[3].Selected = true;
}
}
}
更新测试和使用cellclick
事件工作良好
private void grdData_CellClick(object sender, DataGridViewCellEventArgs e)
{
if (e.ColumnIndex == 5)
{
if(grdData.Rows[e.RowIndex].Cells[3].Value.Equals(""))
{
grdData.ClearSelection();
grdData.Rows[e.RowIndex].Cells[3].Selected = true;
}
}
}
private void dataGridView1_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
{
int row = e.RowIndex;
int col = e.ColumnIndex;
if (row < 0 || col != 3)
return;
if (e.FormattedValue.ToString().Equals(String.Empty))
{
}
else
{
double quantity = 0;
try
{
quantity = Convert.ToDouble(e.FormattedValue.ToString());
if (quantity == 0)
{
MessageBox.Show("The quantity can not be Zero", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information);
e.Cancel = true;
return;
}
}
catch
{
MessageBox.Show("The quantity should be decimal value.", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information);
e.Cancel = true;
return;
}
}
}
您可以试试这段代码
dgv.ClearSelection();
dgv.Rows[rowindex].Cells[columnindex].Selected = true;
参考代码:
DataGridView1.CurrentCell = dataGridView1[1, 1].Value;
'or
DataGridView1.CurrentCell = DataGridView1.Item("ColumnName", 5)
dataGridView1.BeginEdit(true)
有关更多帮助,您可以关注以下链接中的讨论:
http://www.vbdotnetforums.com/winforms-grids/11313-setting-cell-focus-datagridview.html