我有一个datagridview
包含一些列的 Windows 窗体。我想通过后面的代码隐藏 Ist 列( CompanyID )。
但 Ist 列并没有隐藏。
尝试了以下两件事:
dgvVendorDetails.Columns["CompanyID"].Visible = false;
和:
dgvVendorDetails.Columns[0].Visible = false;
我不知道这背后的原因。我搜索了很多但没有解决方案。
我有一个datagridview
包含一些列的 Windows 窗体。我想通过后面的代码隐藏 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
显示网格之前也不会创建列。
所以有可能:
如果是这样,解决方案是使用DataBindingComplete
事件。
另请参阅这些相关问题:
编辑
正如@brikovich 指出的那样,另一个解决方案不是不使用 AutoGenerated 列,而是在设计时或运行时创建并配置它们。
这个线程如何在绑定到 DataTable 的 Datagridview 中选择可见列可以帮助您实现这一点和/或在这两个选项之间做出选择。
尝试这个:
VB.net:
Private Sub dgvVendorDetails_ColumnAdded(sender As Object, e As DataGridViewColumnEventArgs) Handles dgvVendorDetails.ColumnAdded
If e.Column.Name = "CompanyID" Then dgvVendorDetails.Columns("CompanyID").Visible = False
End Sub
C#:
private void dgvVendorDetails_ColumnAdded(object sender, DataGridViewColumnEventArgs e)
{
if (e.Column.Name == "CompanyID")
dgvVendorDetails.Columns("CompanyID").Visible = false;
}
将自动生成列设置为 false,然后将每一列一一添加到网格中。然后将不想看到的列设置为可见 = false。不需要后面的代码。