无法隐藏 datagridview 中的第一列?

use*_*432 2 c# datagridview winforms

我有一个datagridviewWindows 窗体,其中包含一些列。我想通过后面的代码隐藏 Ist 列( CompanyID )。

但I列并没有隐藏。

尝试过以下两件事:

dgvVendorDetails.Columns["CompanyID"].Visible = false;
Run Code Online (Sandbox Code Playgroud)

和:

dgvVendorDetails.Columns[0].Visible = false;
Run Code Online (Sandbox Code Playgroud)

我不知道这背后的原因。我进行了很多搜索但没有找到解决方案。

Chr*_*ris 5

这两种语法都是正确的并且应该有效:

dgvVendorDetails.Columns["CompanyID"].Visible = false;
dgvVendorDetails.Columns[0].Visible = false;
Run Code Online (Sandbox Code Playgroud)

我的猜测是,您正在使用该DataGridView.AutoGenerateColumns功能,即使您设置了该DataSource属性,DatagridView在显示网格之前也不会创建列。

所以有可能:

  • 您尝试访问尚不存在的列(但代码应该引发异常)
  • 或者您访问有效的列,但当再次绑定网格时它们会被替换,因此您的代码无效(可能是您的情况,因为您没有提到异常)。

如果是这样,解决方案是使用DataBindingComplete事件。

另请参阅这些相关问题:

编辑

正如@brikovich 指出的,另一个解决方案不是不使用自动生成的列,而是在设计时或运行时创建它们并配置它们。

此线程如何在 Datagridview 中选择绑定到 DataTable 的可见列可以帮助您实现此目的和/或在这两个选项之间做出选择。