在设计器中的选项卡控件的多个页面上显示控件

时间:2009-11-10 15:03:27

标签: c# winforms tabcontrol

我想使用制表符控件在DataGridView中显示的数据集之间切换(目前我正在使用单选按钮)。在运行时,我可以将控件从一个选项卡移动到下一个选项卡,但SelectedIndexChanged事件不会在设计器中触发。

private void tabControl1_SelectedIndexChanged(object sender, EventArgs e)
{
    tabControl1.TabPages[tabControl1.SelectedIndex].Controls.Add(label1);
}

有没有办法让DGV出现在设计师的所有标签上,或者这是我必须忍受的限制?

3 个答案:

答案 0 :(得分:2)

标签控件是否会切换DGV以外的任何控件?你可以只放下标签控件,调整垂直高度,使其高度足以让标签本身,然后将DGV放在它下面(这样它不在标签控件中)?

答案 1 :(得分:1)

我不确定我会认为这是一个限制,但作为正确的实施。标签页是一个容器,我很确定一个小部件只能有一个直接的父容器。所以设计师不应该在飞行中重新分配父母。听起来你并不是真的希望DGV在标签页容器中,而只是为了能够与Tab控件的事件处理的一部分进行交互。

如果是这样,我建议您使用面板和自动调整来处理Dan Neely上面提到的演示问题。

例如,考虑具有不同“模式”的搜索系统。在顶部面板中放置一个标签控件,标签页面包含小部件,以实现与“模式”相关的搜索条件,例如,关键字搜索与属性搜索与工作流搜索。将DGV放在包含标签的面板下方的单独面板中。然后,当有标签事件时,您可以根据需要操作DGV内容。面板可以管理调整大小的演示问题。

答案 2 :(得分:0)

我很确定这是Visual Studio设计师的限制。

我也会选择类似JMarsh的解决方案。