【发布时间】:2008-10-30 11:27:47
【问题描述】:
如何限制在 C# 窗口控件的面板中添加控件?我必须在设计时限制用户在面板中添加控件。
【问题讨论】:
如何限制在 C# 窗口控件的面板中添加控件?我必须在设计时限制用户在面板中添加控件。
【问题讨论】:
如果您想限制可以添加到面板的控件类型或控件数量,您可以创建自己的面板子类,并在 Controls.Add 方法的重载中检查控件类型或控件计数。
编辑:重载 Controls.Add 方法并不像我想象的那么容易,但是您可以创建一个扩展 Panel 类的新类并重写 OnControlAdded 方法来检查添加的控件的类型。像这样的东西应该可以工作:
class MyPanel : Panel
{
public MyPanel()
{ }
protected override void OnControlAdded(ControlEventArgs e)
{
base.OnControlAdded(e);
if (!(e.Control is Label))
{
MessageBox.Show("control " + e.Control.Name + " is not a label but a " + e.Control.GetType().ToString());
Controls.Remove(e.Control);
}
}
}
【讨论】:
将 AllowDrop 设置为 false。
【讨论】: