C# WindowsForms UserControl 的控件设计器支持

use*_*120 5 c# user-controls editing windows-forms-designer winforms

我正在寻找的是对用户控件内的控件的相同类型的设计器支持。即 - 将用户控件放置到表单上后,调整用户控件内的文本框大小,移动标签。

我能做的事...

  1. 创建一个用户控件
  2. 使用设计器向其添加控件
  3. 创建一个新的窗口窗体应用程序
  4. 将用户控件添加到工具箱
  5. 将控件拖放到窗体上

我被困在哪里...

  1. 编辑用户控件控件。IE - 能够使用设计器调整用户控件内的文本框的大小。

我在堆栈上发现了一个类似的问题,但从未得到解答。因此,如果我太含糊,您可以点击此链接/sf/ask/725184071/

谢谢。

use*_*120 4

阅读 Nikita 的评论后,我找到了有关为控件创建自定义设计器的 Microsoft 支持页面。

如果您对指定时间支持的运作方式感兴趣,请参阅以下报价

然而,.NET Framework 中组件的设计时支持并不是由 Microsoft Visual Studio .NET 等设计工具专门定义的。相反,开发环境支持通过诸如为组件提供设计时支持的设计器等类来扩展和定义设计时行为。对可扩展和可自定义设计模式行为的支持是 .NET Framework 的一个集成部分。Visual Studio .NET 等工具还提供了设计人员可以使用的一系列设计时服务。

如果您想继续阅读并查看 Microsoft 的示例,请访问此网页

增强设计时支持

当您刚开始学习时,一切似乎都很复杂,这里有一个 UserControl 的工作代码示例,上面有一个 PictureBox 和一个 Label。这两个控件都可以在设计时进行编辑,即。调整大小和重新定位,并在单击它们时公开它们的所有事件和属性。

您将需要添加对 System.Design 的引用,只有当您的目标不是“.Net Client Profile”时才能引用该引用。您可以在 Proprieties/Application/TargetFramework 中更改目标配置文件。

将用户控件添加到您的项目中并添加一个类来处理它的设计器。双击用户控件,然后从工具栏中添加标签和图片框。

接下来打开您创建的类作为它的设计者。添加这个...

using System.Windows.Forms;
using System.Windows.Forms.Design;

    public override void Initialize(IComponent component)
    {
        base.Initialize(component);

        if (this.Control is MyUserControl)  // replace this with your usercontrol type
        {
            // cast this.Control to you type of usercontrol to get at it's
            // controls easier
            var i = this.Control as MyUserControl; // replace ***

            this.EnableDesignMode(i.label1, "unique_name1");
            this.EnableDesignMode(i.pictureBox1, "unique_name2");
        }
    }
Run Code Online (Sandbox Code Playgroud)