【问题标题】:Adding controls to tab page runtime向标签页运行时添加控件
【发布时间】:2011-11-07 00:50:35
【问题描述】:

我正在使用 C# 和 winForms,我有几个选项卡控件,其中包含一些选项卡页, 我想添加我的用户控件的所有标签页,如果我可以在用户单击标签页后添加它,那将是最好的。它只对我有用,当我在构造函数中添加这个控件时 - 导致应用程序启动延迟的原因 - 大约 3 秒,非常多。

我想在运行时添加这个控件,比如

tabPage1.onClickEvent()
{
tabPage1.Controls.Add(myUserControl);
}

但它不起作用,我也尝试使用 Invalidate 或 Refresh 方法但它不起作用。

那么有没有可能在构造函数之外的其他方法中添加这个用户控件? 也许是它的问题,我在 TabControl 中有 TabControl,我必须通过父 TabControl 添加这个控件? 谢谢!

【问题讨论】:

  • 我遇到了类似的问题,并通过向 TabControl 添加/删除标签页来解决它。也许这种方法对你更有效。总的来说,我认为 3 秒的启动时间就差不多了。您确定这是由向组件添加控件引起的吗?您能否更详细地了解您想要实现的目标?也许让用户控制在那里并切换Visible属性会更好
  • 你是什么意思你有一个tabcontrol里面有一个tabcontrol?你不应该有一个带有标签页的标签控件吗??
  • 这个延迟可能是因为我有 28 个标签页 - 每个标签页都由 userControl 组成 - 它由 2-3 个 userControls 组成,所以它几乎是 userControls。
  • 我有一个主要的 tabcontrol,它由 2 个标签页组成 - 这个标签页由另一个 tabcontrol 组成 - 由标签页组成 - 我想在其中添加控件
  • 这听起来像是一个疯狂的 UI 设计,会让用户感到困惑。话虽如此,@yas4891 创建和设置可见属性为 false 直到您需要将其显示给用户的想法是一种很好的方法(除非您根据其他逻辑加载一组不同的 28 个选项卡)。

标签: c# winforms user-controls controls tabpage


【解决方案1】:

尝试在设计器中双击标签页,或者您可以像这样手动添加事件处理程序:

tabPage1.Click += new EventHandler(tagPage1_Click);

我不知道tabPage1是否是动态的,但如果不是,你应该将上面的事件处理程序添加到你的designer.cs文件中。

这是代码中的事件处理程序:

protected void tabPage1_Click(object sender, EventArgs e)
{
    tagPage1.Controls.Add(new TextBox());
}

【讨论】:

    猜你喜欢
    • 2011-03-28
    • 2012-07-23
    • 1970-01-01
    • 2015-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-13
    • 1970-01-01
    相关资源
    最近更新 更多