【问题标题】:How prevent container control from being moved in user control during design-time?在设计时如何防止容器控件在用户控件中移动?
【发布时间】:2010-10-31 17:47:11
【问题描述】:

我有一个自定义控件,其中包含 6 个面板控件,它们的作用类似于在设计时放入的其他控件的容器。这是通过创建一个继承自 ParentControlDesign 的自定义设计器来完成的。在设计器中,我使用 EnableDesignMode 为每个面板控件启用设计时功能。问题是当我使用控件时,我可以移动面板。我可以做些什么来防止它们在设计时移动?

【问题讨论】:

    标签: c# user-controls containers design-time


    【解决方案1】:

    我找不到这个问题的理想解决方案,只是部分解决方案。我假设您按照this answer 中的方法为面板启用了设计模式。

    改变面板的设计行为需要给他们自己的设计师。这是一个执行此操作的示例类:

    using System;
    using System.ComponentModel;
    using System.Windows.Forms;
    using System.Windows.Forms.Design;
    
    [Designer(typeof(MyPanelDesigner))]
    public class MyPanel : Panel {
        private class MyPanelDesigner : ScrollableControlDesigner {
            public override SelectionRules SelectionRules {
                get { return SelectionRules.None; }
            }
        }
    }
    

    用 MyPanel 替换 UC 中的面板。自定义的 SelectionRules 属性确保用户不能轻易地用鼠标将面板拖到另一个位置。但是,位置和大小属性仍然可以在属性网格中进行编辑。为了摆脱它,我认为您需要覆盖 PreFilterProperties()。

    【讨论】:

      猜你喜欢
      • 2012-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多