【问题标题】:A combination of winforms' controls as a prefab?将winforms的控件组合为预制件?
【发布时间】:2016-06-29 16:19:06
【问题描述】:

在我们的 winforms 应用程序中,我们经常会遇到同一个面板用于不同表单的情况。现在我只是将代码和设计器元素从一个表单复制到另一个表单,但这显然是一种糟糕的做法。

所以我想制作一个可以作为“组件”轻松添加到不同表单的类。唯一的问题是能够在可视化设计器中对这个面板进行原型设计和维护,这样如果我想在将来更改面板的外观,它会针对我创建的每个类实例进行更改。

例如,我有一个提供搜索功能的面板:

连同 click/textChanged 事件的代码。我想将它封装在一个类中,我将能够在任何表单的构造函数中对其进行实例化和初始化,以立即将这些控件(以及事件)添加到该表单中。现在我不需要在接收表单的设计器中查看控件,但是,我需要能够在设计器中的某个地方看到它们,以便在需要时修改它们。

如果我确实以某种方式修改了外观(例如添加一个额外的按钮),这些控件会立即在整个项目中发生变化,无论我在哪里实例化该类。

我知道所有这些都可以很容易地完成,只需创建一个新表单并将所有内容封装在其中,我只是想知道是否可以为一组控件完成。

【问题讨论】:

  • 只需新建一个 UserControl 并将所有内容封装在其中
  • 右键单击您的项目 -> 转到“添加”并单击 UserControl
  • 好吧,看起来它就在我的眼皮底下 :)。如果您想将其放在答案中,我会接受。但请务必写下“项目->添加”之类的内容 :),因为我很喜欢 Stack 上的答案尽可能精简且易于消化。

标签: winforms


【解决方案1】:

您刚刚描述了用户控件的完美使用。它易于使用和直接。

首先在项目中添加一个用户控制:

然后在用户控件上添加想要的控件:

构建项目,您将在工具箱上看到 UserControl:

将它们作为标准控件添加到表单中:

如果您更改用户控件的代码(在这种情况下添加按钮单击处理程序),ui 将影响该用户控件的所有实例:

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    TextBox1.Text = "Button Clicked"
End Sub

注意:如果您在同一解决方案的另一个项目中拥有控件,请确保在进行任何更改时也构建该项目。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-01
    • 2011-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-31
    相关资源
    最近更新 更多