簡體   English   中英

無法隱藏datagridview中的第一列?

[英]Not able to hide first column in datagridview?

我在Windows窗體中有一個datagridview ,其中包含一些列。 我想通過后面的代碼隱藏Ist列( CompanyID )。

但是Ist列並未隱藏。

嘗試了以下2件事:

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中選擇可見列可以幫助您實現這一點和/或在這兩個選項之間進行選擇。

將自動生成的列設置為false,然后將每一列一一添加到網格中。 然后將您不希望看到的列設置為visible = false。 無需后面的代碼。

嘗試這個:

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;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM