繁体   English   中英

如何防止UserControl的使用者看到控件的子控件?

[英]How to prevent a consumer of a UserControl from seeing the control's child controls?

如果在C#中创建Windows UserControl,则该UserControl的“子级”控件通过“ Controls”集合公开。 也就是说,用户控件的使用者可以引用控件集合并获得对内部控件的访问权限。

有没有办法分隔这种设计,以使消费者无法访问UserControl设计者未明确公开的任何内容?

示例:我有一个用户控件,在内部有两个TextBox控件。 我的UserControl的使用者可以编写以下内容:

MyControl1.Controls[0].Enabled = false;

是否有一种方法(例如),使“控件”属性返回一个空集合,从而使消费者无法摆弄用户控件的内部工作原理?

UserControl应该公开几乎所有“ Control”将公开的属性,但不能公开提供对其内部工作的访问的集合,这似乎是合理的。

谢谢罗斯

不知道这是否在所有情况下都能奏效,但这似乎在一个非常简单的测试中。

public partial class UserControl1 : UserControl
{
  private ControlCollection _controls;

  public UserControl1()
  {
     InitializeComponent();

     _controls = new ControlCollection(this);
  }

  new public ControlCollection Controls
  {
     get
     {
        return (_controls != null ? _controls : base.Controls);
     }
  }
}

当然,如果用户控件要访问自己的“控件”集合(并且必须使用base.Controls),则需要小心

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM