C# - 隐藏UserControl类的所有方法

Unf*_*enX 1 c# inheritance user-controls base-class

我有一个自定义用户控件.通常它继承了这个UserControl类.但通过这种方式,它继承了所有公共方法和属性UserControl.但我想隐藏所有这些并实现我自己的一些方法和属性.

假设我有一个名为的自定义控件CustomControl.

public class CustomControl : UserControl
Run Code Online (Sandbox Code Playgroud)

当我创建一个实例CustomControl:

CustomControl cControl = new CustomControl();
Run Code Online (Sandbox Code Playgroud)

当我输入cControl.intellisense 时,我提供了所有来自的方法和属性UserControl.但我想只列出我在CustomControl课堂上实施的.

谢谢

Ric*_*ein 6

您可以创建一个接口,然后只显示该接口的方法和属性.

public interface ICustomControl {
     string MyProperty { get; set;}
}

public class CustomControl : UserControl, ICustomControl {
     public string MyProperty { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

...

ICustomControl cControl = new CustomControl();
Run Code Online (Sandbox Code Playgroud)

然后intellisense只显示MyProperty和Object的成员(以及扩展方法,如果有的话).

编辑:

protected ICustomControl CustomControl { get; set; }
    public Form1()
    {
        InitializeComponent();
        CustomControl = this.customControl1;
        CustomControl.MyProperty = "Hello World!"; // Access everything through here.
    }
Run Code Online (Sandbox Code Playgroud)

然后,如果需要,可以将CustomControl的范围设置为内部或受保护的内部.

  • 但是通过这种方式,我无法通过在设计视图中将其拖放到表单中来使用我的自定义控件,因为它将使用"CustomControl"本身而不是界面创建.我需要转到设计器代码并手动将"CustomControl"更改为"ICustomControl". (2认同)