[英]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.