CellContentClick事件并不总是有效

时间:2014-03-18 19:28:14

标签: c# winforms

CellContentClick事件并不总是有效 - 它有时是有效的,有时不是随机的。

我的代码如下,我正在使用断点进行检查,但程序有时会进入块,有时则不会。为什么会这样?

private void dataGridView1_CellContentClick_1(object sender, DataGridViewCellEventArgs e)
{
    textBoxUserName.ReadOnly = true;
    button2.Visible = true;
    int index = e.RowIndex;
    if (!(index < 0))
    {
        DataGridViewRow row = dataGridView1.Rows[index];
        textBoxUserName.Text = row.Cells["UserNAme"].Value.ToString();
        textBoxPassword.Text = row.Cells["Pass"].Value.ToString();
        dataGridView1.Focus();
    }
    dataGridView1.Focus();
}

2 个答案:

答案 0 :(得分:21)

请尝试使用CellClick事件:

  

单击单元格的任何部分时发生。

单击单元格时,CellContentClick事件不一定会触发,用户必须单击单元格的“内容”区域,例如文本:

  

单击单元格中的内容时发生。

答案 1 :(得分:0)

尝试改用 CellClick 事件(正如 LarsTech 所说。

双击设计视图上的数据网格会将 CellContentClick 事件链接到一个方法,这意味着您需要准确单击内容,而不是单元格。

假设我们有一个名为“IsChecked”的单元格,它是一个布尔值并显示为一个小复选框。在复选框中单击右键将触发 CellContentClick,而在其他任何地方都不会。

“其他任何地方”包括内容前后的空格、填充空格、行标题。

当使用 CellClick 时,我们需要检查行标题是否被点击,这会生成 e.RowIndex = -1。

        if (e.RowIndex < 0 || e.RowIndex >= dataGridView.RowCount)