C#Windows窗体用户控件控件设计器支持

时间:2013-01-15 03:19:03

标签: c# winforms user-controls windows-forms-designer editing

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

我能做到的......

  1. 创建用户控件
  2. 使用设计器向其添加控件
  3. 创建一个新窗口表单应用
  4. 将usercontrol添加到工具箱
  5. 将控件拖放到表单
  6. 我被困住了......

    1. 编辑usercontrols控件。 IE - 能够使用设计器调整用户控件内的文本框的大小。
    2. 我在堆栈上发现了一个从未回答的类似问题。因此,如果我太模糊,您可以点击此链接https://stackoverflow.com/questions/10359772/example-make-constituent-controls-in-a-usercontrol-editable

      谢谢。

1 个答案:

答案 0 :(得分:3)

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

如果您对设计时支持的工作方式感兴趣

,这是一个引用
  

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

如果您想继续阅读并查看Microsoft的示例

,这是该网页

Enhancing Design-Time Support

当你开始学习它时,一切看起来都很复杂,下面是一个UserControl的工作代码示例,其上有一个PictureBox和一个Label。两个控件都可以在设计时编辑,即。调整大小和重新定位,并在单击它们时公开它们的所有事件和属性。

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

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

接下来打开你创建的那个班级作为它的设计师。添加这个......

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");
        }
    }