我有一个包含这样的元素的基本形式:
- pnl类型为Panel
的搜索:搜索按钮
- 类型FlowLayoutPanel
的pnlActions:添加,编辑,删除,导出..等按钮
没有锁定,两个面板的修饰符都是Private
&按钮的修饰符为Protected
FlowLayoutPanel
用于自定义子表单中的选项(例如删除删除选项),而不留空格,因为元素将相应地流动。
在子表单中,只能访问搜索按钮。 pnlActions
中的按钮在设计器中被锁定,但通过检查属性Locked = False
和Modifiers= Protected
尝试将pnlActions'修饰符设置为Protected
,但它仍然相同。
知道是什么导致了这种行为吗?
除了内部控件布局之外,Panel
和FlowLayoutPanel
之间的区别是什么?
如果我手工编码任何东西,我会发布代码示例,但它都是由设计师生成的
我在Win7上使用VS 2013,如果这很重要的话 提前致谢
答案 0 :(得分:1)
这是Designer的问题。如果您通过代码进行所有更改工作... 该问题将无法解决,因为该平台不再受到Microsoft的维护。
答案 1 :(得分:0)
我知道这是一个古老的问题,但是如果有人需要,我也提供了一个可能的解决方案。
我们将创建一个继承FlowLayoutPanel
的类,我将其命名为FlowLayoutPanelHeritable
。您可以将其放在您认为合适的名称空间中,在本示例中,名称空间为WindowsFormsApp
。
using System.ComponentModel;
using System.Windows.Forms;
using System.Windows.Forms.Design;
namespace WindowsFormsApp
{
[Designer(typeof(ParentControlDesigner))]
public class FlowLayoutPanelHeritable : FlowLayoutPanel
{
}
}
首先,我们必须设置FlowLayoutPanel
中FatherForm
中Protected
的修饰符。现在,我们必须通过访问FatherForm
的{{1}}中的代码进行修改。我们将用FatherForm.designer.cs
替换FlowLayoutPanel
的每个实例(在变量的创建和初始化中)。然后,我们保存并重新编译。
现在,如果您访问FlowLayoutPanelHeritable
,将在设计时看到您不再具有修改限制。
重要提示:如果要编辑ChildForm
,则必须访问FatherForm
并将所有FatherForm.designer.cs
替换为FlowLayoutPanelHeritable
;完成编辑后,执行相反的过程。