我在Windows窗体中有datagridview
,其中包含一些列。我想通过后面的代码隐藏Ist列( CompanyID )。
但Ist专栏并未隐藏。
尝试了以下两件事:
dgvVendorDetails.Columns["CompanyID"].Visible = false;
和
dgvVendorDetails.Columns[0].Visible = false;
我不知道背后的原因。我经常搜索但没有解决方案。
答案 0 :(得分:4)
这两种语法都是纠正的,应该有效:
dgvVendorDetails.Columns["CompanyID"].Visible = false;
dgvVendorDetails.Columns[0].Visible = false;
我的猜测是您正在使用DataGridView.AutoGenerateColumns
功能,即使您设置了DataSource
属性,DatagridView
也不会创建列,直到显示网格。
所以有可能:
如果是这样,解决方案是使用DataBindingComplete
事件。
另见这些相关问题:
修改强>
正如@brikovich所指出的,另一个解决方案不是使用AutoGenerated列,而是创建它们并在设计时或运行时配置它们。
此帖子How to select visible columns in Datagridview bound to DataTable可以帮助您实现这一目标和/或在这两个选项之间做出选择。
答案 1 :(得分:0)
将autogenerate列设置为false,然后将每列逐个添加到网格中。然后将您不希望看到的列设置为visible = false。不需要代码。
答案 2 :(得分:0)
试试这个:
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;
}