Joh*_*res 2 c# user-controls containers design-time
我有一个自定义控件,其中包含 6 个面板控件,它们的作用类似于在设计时放入的其他控件的容器。这是通过创建一个继承自 ParentControlDesign 的自定义设计器来完成的。在设计器中,我使用 EnableDesignMode 为每个面板控件启用设计时功能。问题是当我使用控件时,我可以移动面板。我可以做些什么来防止它们在设计时移动?
我找不到这个问题的理想解决方案,只是部分解决方案。我假设您按照本答案中的方法为面板启用了设计模式。
改变面板的设计行为需要给它们自己的设计师。这是一个执行此操作的示例类:
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; }
}
}
}
Run Code Online (Sandbox Code Playgroud)
用 MyPanel 替换 UC 中的面板。自定义 SelectionRules 属性确保用户无法轻松地使用鼠标将面板拖动到另一个位置。然而,位置和大小属性仍然可以在属性网格中编辑。为了摆脱这一点,我认为您需要覆盖 PreFilterProperties()。
| 归档时间: |
|
| 查看次数: |
749 次 |
| 最近记录: |