我在 Windows 窗体中有一个 datagridview
,其中包含一些列。我想通过后面的代码隐藏 Ist 列(CompanyID)。
但 Ist 列并未隐藏。
尝试过以下两件事:
dgvVendorDetails.Columns["CompanyID"].Visible = false;
还有:
dgvVendorDetails.Columns[0].Visible = false;
我不知道这背后的原因。我查了很多资料,但没有找到解决办法。
最佳答案
这两种语法都是正确的并且应该有效:
dgvVendorDetails.Columns["CompanyID"].Visible = false;
dgvVendorDetails.Columns[0].Visible = false;
我的猜测是,您正在使用 DataGridView.AutoGenerateColumns
功能,即使您设置了 DataSource
属性,DatagridView
也不会创建列直到显示网格。
所以有可能:
- 您尝试访问尚不存在的列(但代码应引发异常)
- 或者您访问有效的列,但当再次绑定(bind)网格时它们会被替换,因此您的代码无效(可能是您的情况,因为您没有提到异常)。
如果是这样,解决方案是使用 DataBindingComplete
事件。
另请参阅这些相关问题:
- Why DataGridColumn not getting removed from DataGridView
- Datagirdview and tabcontrol issue
- Strange issue with a datagridview and a tabcontrol C#
- DataGridView has no columns
编辑
正如 @brikovich 指出的,另一个解决方案不是不使用自动生成的列,而是在设计时或运行时创建并配置它们。
此线程How to select visible columns in Datagridview bound to DataTable可以帮助您实现这一目标和/或在这两个选项之间做出选择。
关于c# - 无法隐藏 datagridview 中的第一列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18791041/