gpt4 book ai didi

c# - DataGridView RowsAdded 事件处理程序不工作?

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

当我的 DataGridView 有 1 行或多行时,我需要启用一个组合框。

我有以下未触发的代码。我正在使用 dataGridView1.Rows.Add(...) 方法向 DataGridView 添加行。

private void dataGridView1_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
{
comboBox1.Enabled = (e.RowCount > 1); // ? true : false; Thanks Blogbeard -- Changed back to (e.RowCount > 1) to show my error.
}

问题:

为什么这行不通?

有更好的方法吗?我应该使用的另一个事件处理程序?

编辑:

Form1.Designer.cs 中的事件处理程序订阅:

this.dataGridView1.RowsAdded += new System.Windows.Forms.DataGridViewRowsAddedEventHandler(this.dataGridView1_RowsAdded);

VS 2010 中显示事件处理程序的屏幕截图应注册到我的 DGV

enter image description here

最佳答案

您的原始代码(在您第一次编辑之前)如下所示:

private void dataGridView1_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
{
comboBox1.Enabled = (e.RowCount > 1); // ? true : false;
}

e.RowCount 值报告您当前添加的行数,不是有多少行恰好位于 DataGridView 中调用 Add() 的时间。

换句话说,如果你重复调用dataGridView1.Rows.Add(1),那么上面的代码每次都会禁用comboBox1,因为你没有添加一次 2 行或更多行。

相应地更改您的代码:

private void dataGridView1_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
{
comboBox1.Enabled = (e.RowCount > 0); // ? true : false;
}

此外,由于尝试添加少于 1 行的任何内容都会抛出 ArgumentOutOfRangeException,因此您最好甚至不去检查 e.RowCount...它总是大于 0。

private void dataGridView1_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
{
comboBox1.Enabled = true;
}

关于c# - DataGridView RowsAdded 事件处理程序不工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29664041/

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