2009-07-05 67 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文件中的代码,获取包含选项卡控件的表单。你会看到生成的代码添加一个新选项卡。只需复制这些行,您可以随时添加一个新选项卡。