【问题标题】:Cause an exception "ReadOnly controls collection" - when editing UI导致异常“ReadOnly 控件集合” - 编辑 UI 时
【发布时间】:2019-10-21 20:06:56
【问题描述】:
我接手了别人的项目,他们使用了 Krypton Toolkit。当我更改 UI 上的任何内容(即添加按钮、编辑文本、添加菜单项)时,我收到此异常错误:
this.kryptonHeaderGroupMain.Controls.Add(this.kryptonHeaderGroupMain.Panel);
导致异常“ReadOnly 控件集合”
..它搞砸了设计器视图。
我错过了什么?
按照一些人的建议,我试过了,但还是失败了:
this.<kryptonControlsContainer>.Panel.Controls.Add(this.<otherControlName>);
【问题讨论】:
标签:
c#
winforms
krypton-toolkit
【解决方案1】:
KryptonHeaderGroup 控件的Controls 属性是一个自定义控件集合(它被命名为KryptonReadOnlyControls),它不允许添加或删除子控件。 KryptonHeaderGroup 的设计方式是它有一个 Panel 作为其子控件的容器。你需要做的如下。
在设计模式下:
在添加任何控件之前,请确保选择面板而不是 KryptonHeaderGroup 本身。查看这些屏幕截图的不同之处:
使用代码:
//kryptonHeaderGroup1.Controls.Add(new KryptonButton()); // Throws an exception.
kryptonHeaderGroup1.Panel.Controls.Add(new KryptonButton()); // Works fine.
注意:同样的逻辑适用于其他控件,例如 KryptonGroupBox、KryptonGroup 和 KryptonSplitContainer。