Winforms 在VS2008中,可视化继承与用户控件一起工作吗

Winforms 在VS2008中,可视化继承与用户控件一起工作吗,winforms,visual-studio-2008,inheritance,visual-inheritance,Winforms,Visual Studio 2008,Inheritance,Visual Inheritance,我有一个基本的用户控件。我将Ok和Cancel按钮放在控件的右下角,并将它们锚定在底部和右侧 然后创建另一个从基本用户控件继承的用户控件。I调整继承控件的大小,例如增加高度或宽度。将继承的控件扔到窗体上。跑继承的控件不支持“确定”和“取消”按钮的定位属性 以下是重新编程的确切步骤 1-创建新的winforms项目 2-使用位于底部/右侧的“确定”和“取消”按钮创建基本控件BaseControl1。将它们锚定在底部,对。编译应用程序 3-创建新的用户控件UserControl1,该控件继承步骤1中

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

然后创建另一个从基本用户控件继承的用户控件。I调整继承控件的大小,例如增加高度或宽度。将继承的控件扔到窗体上。跑继承的控件不支持“确定”和“取消”按钮的定位属性

以下是重新编程的确切步骤

1-创建新的winforms项目

2-使用位于底部/右侧的“确定”和“取消”按钮创建基本控件BaseControl1。将它们锚定在底部,对。编译应用程序

3-创建新的用户控件UserControl1,该控件继承步骤1中创建的基本控件BaseControl1

4-增加designer UserControl1的高度或宽度

5-将UserControl1抛出到Form1上。跑您将看到“确定”和“取消”按钮并不是它们应该位于的位置


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

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

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

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

您需要在类中的某个位置设置此属性,如构造函数,或者重写该属性并指定希望锚定它的方式。

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

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

this.myOKButton.Anchor = AnchorStyles.Bottom | AnchorStyles.Right;
this.myCancelButton.Anchor = AnchorStyles.Bottom | AnchorStyles.Right;
您需要在类中的某个位置设置此属性,如构造函数,或重写该属性并指定锚定它的方式。

将按钮上的Modifiers属性更改为Protected。然后,在完成步骤4之后,您会注意到UserControl1的设计器代码现在包含一行设置按钮位置的代码。当你的按钮被视为朋友时,这种情况就不会发生

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

将按钮上的Modifiers属性更改为Protected。然后,在完成步骤4之后,您会注意到UserControl1的设计器代码现在包含一行设置按钮位置的代码。当你的按钮被视为朋友时,这种情况就不会发生


我一直在想,为什么从工具箱中删除的控件在默认情况下没有限定为Private。

看起来像是30秒后提出的问题的副本或初稿。如果你看这个问题,它是关于表单的。这是关于用户控件的。看起来像是30秒后提问的问题的副本或初稿。如果你看那个问题,它是关于表单的。这是关于用户控件的。