2012-01-24 45 views
10

我正在努力弄清楚正確的控件用於包含表單中的預定義作業列表。我目前在Predefined Job Name組中有一個ListBoxControl,它列出了一個海上服務商店的所有預定義作業(即換油,調整等)。然後,根據在我的列表框中選擇的項目(即作業名稱),我需要顯示與該作業對應的項目。例如,如果換油是我選擇的工作,我需要顯示4夸脫油,1濾油器,勞動力等......等等。如何隱藏ListView ColumnHeader?

當前,當我加載表單數據時,我有一個DAO,它使用LINQ to SQL從數據庫中檢索所有作業。然後,我遍歷結果並將作業名稱放入ListBox。我遇到的問題是ListBox項目沒有標籤,就像ListView項目一樣。因此,每次用戶在ListBox中選擇另一個項目時,我都必須執行另一個LINQ查詢以再次從數據庫中獲取作業,以便我可以顯示其相應的項目。如果我可以使用ListView並隱藏列標題,我可以在標籤上設置整個作業,這樣每次用戶選擇一個新項目時,我都可以訪問細節,而無需再次調用數據庫。有沒有一種方法可以隱藏ListView的列標題而不隱藏整列?

Windows Form

+0

我會用一個網格,如果要顯示的表格數據,我相信你可以隱藏HeaderRow一個GridView。 –

+0

你的'View'模式設置爲'Details'。爲什麼不把它設置爲'List'? – InBetween

回答

43

您可以設置ListViewNoneHeaderStyle成員。

listView1.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.None;

7

結帳ListView控件HeaderStyle財產。它具有以下選項:

  1. Nonclickable
  2. 可點擊

從MSDN:

的HeaderStyle屬性允許您指定列標題是否可見,如果它們可見,它們是否將用作可點擊的按鈕。如果HeaderStyle屬性設置爲ColumnHeaderStyle.None,列標題不顯示,雖然ListView控件的項目和子項目仍列排列

1

你也可以創建一個像ListItem簡單的對象,它有兩個poperties:Text (字符串)和Tag(對象)。然後實現ListItem.ToString(),你也可以在ListBox中使用它們。

您還可以查看Better ListView Express組件,該組件是免費的並允許在中顯示項目詳細信息沒有列的視圖。與ListBox和ListView相比,它具有本地外觀和許多額外功能。

0

我發現如果你知道一個事實,你不顯示標題,最好將HeaderStyle屬性設置爲None,如Rajesh在上面提到的那樣。

當在屏幕最初加載時在.CS中進行設置時,會顯示標題直到屏幕完全呈現。

1

容易的方法是使用ColumnWidthChanging事件

private void listViewExtended1_ColumnWidthChanging(object sender, ColumnWidthChangingEventArgs e) 
     { 
      if (e.ColumnIndex == 0) 
      { 
       e.Cancel = true; 
       e.NewWidth = listViewExtended1.Columns[e.ColumnIndex].Width; 
      } 
     }