C# Winforms 用对象继承用户控件并修改

问题描述 投票:0回答:2

我创建了名为 ucn 的用户控件,并使用填充用户控件的 datagridview。

在我创建了另一个继承自ucn的用户控件之后:

public partial class ucnRequest : ucn
{

在设计模式下我看到了数据网格视图:

usercontrol inherited

没问题,但我无法添加列。

在主用户控件中,我将 Modifiers 属性更改为 public,但没有任何变化...

谢谢

c# winforms visual-studio inheritance user-controls
2个回答
2
投票

我认为这是因为你的

UserControl
默认情况下不会充当 Windows 窗体编辑器中的“容器”控件,因此 Windows 窗体编辑器不会公开其公共属性。

要使其成为 Windows 窗体编辑器中的“容器”控件,您可以向该类添加以下属性:

[Designer("System.Windows.Forms.Design.ParentControlDesigner, System.Design", typeof(IDesigner))] 
public class MyUserControl: System.Windows.Forms.UserControl
{
     ...

请参阅此处了解更多信息:http://support.microsoft.com/kb/813450


0
投票

我写这篇文章是为了防止有人遇到同样的问题并且看到这个窗口图标但不知道它意味着什么:Icon in question

当我上两节

UserControl
课时,我也遇到了类似的问题。一个继承自基本的
UserControl
,称为
MenuWindow
,下一个称为
ToolsWindow
,继承于
MenuWindow

示例:

第一个继承自

UserControl

的类
public partial class MenuWindow : UserControl

继承刚刚创建的

MenuWindow
控件的第二个类:

public partial class ToolsWindow : MenuWindow

问题是,当您向

MenuWindow
添加新控件时,每个新控件都会将此
Modifiers
属性设置为
private
。从字面上看,这意味着您无法在所在类之外编辑此新控件的任何属性。如果将每个控件的 Modifiers 属性设置为
protected
,一切都会按预期工作,您最终可以修改您的
ToolsWindow
中这个新控件的属性。

您还必须清理解决方案并重建项目。

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.