【问题标题】:Restrict adding control on Panel限制在面板上添加控件
【发布时间】:2008-10-30 11:27:47
【问题描述】:

如何限制在 C# 窗口控件的面板中添加控件?我必须在设计时限制用户在面板中添加控件。

【问题讨论】:

    标签: windows .net-2.0 panel


    【解决方案1】:

    如果您想限制可以添加到面板的控件类型或控件数量,您可以创建自己的面板子类,并在 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);
            }
    
        }
    
    }
    

    【讨论】:

    • 我怎样才能覆盖 Controls.Add 方法?
    【解决方案2】:

    将 AllowDrop 设置为 false。

    【讨论】:

    • 对不起,您可能需要为您的问题添加更多细节,然后兄弟,从我坐的地方应该这样做。
    • AllowDrop 属性定义我们是否可以将一些数据拖放到控件上。它对允许或禁止将控件添加到面板中没有任何作用。我的问题很简单。我必须限制用户通过拖放和代码在面板上添加控件。非常感谢。
    猜你喜欢
    • 2015-09-23
    • 1970-01-01
    • 2022-01-02
    • 1970-01-01
    • 1970-01-01
    • 2019-02-02
    • 1970-01-01
    • 2012-01-16
    • 2015-07-17
    相关资源
    最近更新 更多