Windows 窗体设计器 - 如何防止删除子控件

Posted

技术标签:

【中文标题】Windows 窗体设计器 - 如何防止删除子控件【英文标题】:Windows Forms designer - How to prevent deletion of child controls 【发布时间】:2012-01-15 04:10:09 【问题描述】:

似乎有一个类似的问题here

我有一个带有名为 Buttons 的属性的基本表单。它只是一个 Button 对象的通用列表。这对于表单设计器的属性网格中的派生表单是可见的,并由 CollectionEditor 支持。当通过集合编辑器添加按钮时,它会添加到基本表单上的控件中,当它被删除时,它会从表单中删除。

问题是用户也可以通过选择它并单击删除来手动将其从表单中删除。

如何通过 Buttons 属性强制用户使用集合编辑器并阻止他们直接在设计器界面上进行更改?

【问题讨论】:

您不能,除非您为表单创建自定义设计器,以便您可以明确禁止删除按钮的尝试。不容易上手。重新思考拥有 Buttons 属性的智慧。您始终可以通过 Controls 属性找到按钮。 谢谢汉斯,这正是我需要做的。我创建了一个自定义设计器,现在一切正常。 【参考方案1】:

将整个内容封装为用户控件。

然后就像一个复合用户控件,你不能玩弄它的内容,除非你有权访问该控件。

所以他们可以删除整个东西,或者他们可以使用它的工具来弄乱按钮。

【讨论】:

这听起来像是一个合理的建议,但我已经尝试过了,并且行为完全相同。在用户控件上添加到面板的按钮控件在表单设计器中仍然可以选择,并且可以单独删除。

以上是关于Windows 窗体设计器 - 如何防止删除子控件的主要内容,如果未能解决你的问题,请参考以下文章

Visual Studio 2008 Windows 窗体设计器如何兼容 QVGA 和 VGA?

当窗体的宽度减小时如何防止控件消失?

winform VS2010视图设计器更新的问题

如何获取特定类型(按钮/文本框)的Windows窗体表单的所有子控件?

在 Windows 窗体设计器中加载窗体时出现“找不到类型”错误

C# winform treeview 节点展开状态的图标设置