2

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

4

1 回答 1

5

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

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

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()。

于 2010-10-31T19:20:33.493 回答