C# DockPanel 手动切换自定义控件添加 刷新出现问题 DockPanel内根据点击按钮显示不同的自定义控件。 10
publicpartialclassChangeControlForm:DevExpress.XtraEditors.XtraForm{privateRedPanelre...
public partial class ChangeControlForm : DevExpress.XtraEditors.XtraForm { private RedPanel red = null; private BluePanel blue = null; private YellowPanel yellow = null; public ChangeControlForm() { InitializeComponent(); red = new RedPanel(); red.Dock = DockStyle.Fill; blue = new BluePanel(); blue.Dock = DockStyle.Fill; yellow = new YellowPanel(); yellow.Dock = DockStyle.Fill; dockPanel1.Controls.Add(yellow); } private void redButton_Click(object sender, EventArgs e) { dockPanel1.Controls.Remove(blue); dockPanel1.Controls.Add(red); } private void BlueButton_Click(object sender, EventArgs e) { dockPanel1.Controls.Remove(red); dockPanel1.Controls.Add(blue); } private void RemoveButton_Click(object sender, EventArgs e) { dockPanel1.Controls.Clear(); } }现在出现问题:第一次点击red按钮,Panel中没有任何控件,可以正确显示red。但第二次点击blue按钮时,不会刷新到blue控件,第三次点击red按钮,则显示blue。总之就是Remove后再Add不会刷新,需要点其他按钮后才刷新出上一次代码添加的控件。有人知道是什么原因吗?应该怎样才能做到及时刷新。不能用dockPanel1.Controls.Clear()清空后再添加,这样会产生其他问题。
展开
展开全部
如果是整体切换panel以及内部控件,可以考虑用Visibible属性。你的需求没说完全,从代码来看只是切换个颜色?那还不如直接用BackGroundColor之类的属性。
更多追问追答
追问
不换Panel,只是换Panel内部显示的控件。颜色只是举个例子,实际使用的是完全不同的两个自定义控件。
我用的是Dev的DockPanel。
需求很明确,就是点击按钮,切换Panel内的控件。因为还有很多消息通知响应,所以也不能简单的设置可见不可见。
追答
不可见的时候消息也不会收到,因此不可见是可行的也是最简单的。以你上面的代码来看要实现动态添加移除似乎技术还没达到
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询