2009-07-05 68 views
10

如何使用Visual Studio C#中動態數量的選項卡創建選項卡控件?使用Visual Studio C#中動態數量的選項卡創建選項卡控件#

我有一個數據庫與表customers。我需要創建一個表格,顯示客戶姓氏首字母的標籤(只有表格中有條目的第一個字母)。每個選項卡應該包含一個DataGrid控件和相應的客戶。我使用DataSet連接到數據庫。

我應該在哪裏插入可生成此類選項卡的代碼片段?我可以使用現有的選項卡控件來做到這一點,還是應該創建自定義控件?

回答

16

您可以使用現有的TabControl生成動態選項卡。下面是一個如何以某種僞代碼形式完成的例子...

TabControl tabControl = new TabControl(); 
tabControl.Dock = DockStyle.Fill; 

foreach (Char c in lastNameList) 
{ 
    TabPage tabPage = new TabPage(); 
    tabPage.Text = c.ToString(); 

    DataGrid grid = new DataGrid(); 

    grid.Dock = DockStyle.Fill; 
    grid.DataSource = dataForTheCurrentLoop; 

    tabPage.Controls.Add(grid); 
    tabControl.Controls.Add(tabPage); 
} 

this.Controls.Add(tabControl); 
0

這聽起來像你最好的路線是創建自己的自定義選項卡控件類。它可以繼承自tab控件的大部分功能和datagrid的屬性,以及其他任何你需要的定製。然後,當你得到你的客戶時,你可以爲你需要的每個字母創建一個標籤並設置相應的屬性。

2

您可以添加代碼來生成選項卡,以確定需要顯示哪些字母,可能是在檢索數據時或在表單的OnLoad()方法中。您應該能夠動態添加/刪除內置選項卡控件中的選項卡。您可以查看設計器代碼,瞭解如何執行此操作或文檔。

請注意,爲每個字符添加單獨的選項卡並不一定是個好主意。 26個選項卡(當數據庫變得相當大時會發生)是一個非常多的選項卡供人們查看 - 它不一定會讓事情變得更快。

相反,考慮提供一個動態過濾機制,類似於Vista的開始菜單上的搜索框。您的用戶可以輸入單個字符(假設您未編寫某種類型的信息亭或僅使用觸摸屏軟件)並立即放大相關名稱。這將在List或Details模式下理想地與ListView一起工作。

1

我不記得現在的具體情況。但只需查看XXX.designer.cs文件中的代碼,獲取包含選項卡控件的表單。你會看到生成的代碼添加一個新選項卡。只需複製這些行,您可以隨時添加一個新選項卡。