gpt4 book ai didi

c# - 在 c# 中单击 CheckBoxCell 时,将插入符移动到 DataGridViewTextBoxCell

转载 作者:太空宇宙 更新时间:2023-11-03 15:41:14 25 4
gpt4 key购买 nike

我有一个包含 2 列的 DataGridView

Column1 type: DataGridViewCheckBoxColumn
Column2 type : DataGridViewTextBoxColumn

当单击 Column1 中的单元格时,插入符/光标应移动到 Column2

代码在下面,但它不起作用。

    private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
DataGridViewRow _row = dataGridView1.Rows[e.RowIndex];
if (Convert.ToBoolean(_row.Cells[0].Value))
{
DataGridViewCheckBoxCell chk = (DataGridViewCheckBoxCell)_row.Cells[1];
_row.Cells[1].ReadOnly = false;
DataGridViewCell textBoxCell = _row.Cells[1];
if (textBoxCell != null)
{
dataGridView1.CurrentCell = textBoxCell;
dataGridView1.BeginEdit(true);
((TextBox)dataGridView1.EditingControl).SelectionStart = 0;
}
}
}

如有任何帮助,我们将不胜感激。

问候
合子

最佳答案

两种解决方案:

  1. 修正你的两个错误:if-statement 的计算结果为 false,但即使它通过了,下一行也会抛出错误。
  2. 更简洁的方法。

<强>1。修复

声明:

if (Convert.ToBoolean(_row.Cells[0].Value))
当第一次单击单元格时 Valuenull 时,

评估为 False。将其更改为:

if (_row.Cells[0] is DataGridViewCheckBoxCell)

当此计算结果为 True 时,以下行将抛出 InvalidCastException:

DataGridViewCheckBoxCell chk = (DataGridViewCheckBoxCell)_row.Cells[1];

或者:

  1. 将索引 1 更改为 0。
  2. 尝试将 _row.Cells[1] 作为 DataGridViewCheckBoxCell。然而 chk 将是 null
  3. 删除该行。无论如何你都不会使用它。

<强>2。清理

替换整个方法:

private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
if (dataGridView1.CurrentCell is DataGridViewCheckBoxCell)
{
dataGridView1.CurrentCell = dataGridView1.CurrentRow.Cells[e.ColumnIndex + 1];
dataGridView1.BeginEdit(true);
}
}

关于c# - 在 c# 中单击 CheckBoxCell 时,将插入符移动到 DataGridViewTextBoxCell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30195302/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com