【问题标题】:Does Visual Inheritance work with User controls in VS2008视觉继承是否适用于 VS2008 中的用户控件
【发布时间】:2010-10-01 10:07:51
【问题描述】:

我有一个基本的用户控件。我将 Ok 和 Cancel 按钮放在控件的右下角,并将它们锚定在 Bottom 和 Right。

然后我创建另一个继承自基本用户控件的用户控件。我调整继承控件的大小(例如增加高度或宽度)。将继承的控件扔到窗体上。跑步。继承的控件不支持 Ok 和 Cancel 按钮的锚属性。

这里是复制的确切步骤。

1 - 创建一个新的 winforms 项目

2 - 创建一个基本控件 (BaseControl1),其底部/右侧有一个 Ok 和 Cancel 按钮。将它们固定在底部,对。编译应用程序。

3 - 创建一个继承自步骤 1 中创建的基本控件 (BaseControl1) 的新用户控件 (UserControl1)。

4 - 增加(在设计器中)UserControl1 的高度或宽度。

5 - 将 UserControl1 扔到 Form1 上。跑步。您会看到“确定”和“取消”按钮不在它们应有的位置。

是我做错了什么,还是 VS2008 根本不遵守基本用户控件上控件的锚属性?

【问题讨论】:

  • 看起来像是 30 秒后提出的问题的重复或初稿。
  • 如果你看那个问题,它被问到关于表单的问题。这个是关于用户控制的。

标签: winforms visual-studio-2008 inheritance visual-inheritance


【解决方案1】:

将按钮上的 Modifiers 属性更改为 Protected。然后,在完成第 4 步后,您会注意到 UserControl1 的设计器代码现在包含一行代码来设置按钮的位置。当您的按钮被限定为 Friend 时,这不会发生。

我一直想知道为什么从工具箱中删除的控件默认没有限定为Private

【讨论】:

    【解决方案2】:

    我认为您的问题是 Anchor 属性的默认值不被锚定。当您更改属性并编译时,这并不意味着这是继承您的控件的类的默认设置。

    如果您使用属性选择器,Visual Studio 会自动在您的应用程序中放置一些代码来更改这些值(即设计器代码)。找到 InitializeComponent() 方法,我敢打赌你会看到以下效果:

    this.myOKButton.Anchor = AnchorStyles.Bottom | AnchorStyles.Right;
    this.myCancelButton.Anchor = AnchorStyles.Bottom | AnchorStyles.Right;
    

    您需要在类中的某处设置此属性,例如构造函数,或覆盖该属性并指定您希望它锚定的方式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-13
      • 1970-01-01
      • 2021-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多