请教一下C# panel切换,屏幕闪烁厉害的问题
我在一个窗口中申明了如下几个自定义控件
private Main_MainControl main_MainControl;
private Main_IntroControl introPanel;
private Main_FlowControl main_FlowControl;
private Main_SearchControl main_SearchControl;
private Main_GetLineControl linePanel;
然后我在主窗口加载函数中初始化他们
private void form_Load(object sender, EventArgs e)
{
main_MainControl = new Main_MainControl();
introPanel = new Main_IntroControl();
main_FlowControl = new Main_FlowControl();
main_SearchControl = new Main_SearchControl();
linePanel = new Main_GetLineControl();
setControlFromId(MAIN_PANEL_FLAG);
}
然后我想在主窗口中通过按钮切换来加载这几个按钮
/// <summary>
/// 一级panel控制器
/// </summary>
/// <param name="iType"></param>
public void setControlFromId(int panelId)
{
//SendMessage(controlPanel.Handle, WM_SETREDRAW, 0, IntPtr.Zero);//关闭重绘
//SendMessage(controlPanel.Handle, WM_SETREDRAW, 0, IntPtr.Zero);//关闭重绘
switch(panelId)
{
case MAIN_PANEL_FLAG:
{
this.controlPanel.Controls.Clear();
_iControl = MAIN_PANEL_FLAG;
controlPanel.Controls.Add(main_MainControl);
main_MainControl.Controls.Add(lineButton);
main_MainControl.Controls.Add(introButton);
main_MainControl.Controls.Add(flowButton);
main_MainControl.Controls.Add(searchButton);
main_MainControl.Controls.Add(handleButton);
break;
}
case INTRO_PANEL_FLAG:
{
this.controlPanel.Controls.Clear();
_iControl = INTRO_PANEL_FLAG;
controlPanel.Controls.Add(introPanel);
introPanel.Controls.Add(backButton);
introPanel.Controls.Add(buttonPanel);
zxjjButton.BackgroundImage = global::Touch.Properties.Resources.zxjsButtonDown;
lcjsButton.BackgroundImage = global::Touch.Properties.Resources.lcjsButtonUp;
ywcxButton.BackgroundImage = global::Touch.Properties.Resources.ywcxButtonUp;
ywblButton.BackgroundImage = global::Touch.Properties.Resources.ywblButtonUp;
pdqpButton.BackgroundImage = global::Touch.Properties.Resources.pdqpButtonUp;
break;
}
case FLOW_PANEL_FLAG:
{
this.controlPanel.Controls.Clear();
_iControl = FLOW_PANEL_FLAG;
controlPanel.Controls.Add(main_FlowControl);
main_FlowControl.Controls.Add(backButton);
main_FlowControl.Controls.Add(buttonPanel);
zxjjButton.BackgroundImage = global::Touch.Properties.Resources.zxjsButtonUp;
lcjsButton.BackgroundImage = global::Touch.Properties.Resources.lcjsButtonDown;
ywcxButton.BackgroundImage = global::Touch.Properties.Resources.ywcxButtonUp;
ywblButton.BackgroundImage = global::Touch.Properties.Resources.ywblButtonUp;
pdqpButton.BackgroundImage = global::Touch.Properties.Resources.pdqpButtonUp;
break;
}
case SEARCH_PANEL_FLAG:
{
this.controlPanel.Controls.Clear();
_iControl = SEARCH_PANEL_FLAG;
controlPanel.Controls.Add(main_SearchControl);
main_SearchControl.Controls.Add(backButton);
main_SearchControl.Controls.Add(buttonPanel);
zxjjButton.BackgroundImage = global::Touch.Properties.Resources.zxjsButtonUp;
lcjsButton.BackgroundImage = global::Touch.Properties.Resources.lcjsButtonUp;
ywcxButton.BackgroundImage = global::Touch.Properties.Resources.ywcxButtonDown;
ywblButton.BackgroundImage = global::Touch.Properties.Resources.ywblButtonUp;
pdqpButton.BackgroundImage = global::Touch.Properties.Resources.pdqpButtonUp; ;
break;
}
case LINE_PANEL_FLAG:
{
this.controlPanel.Controls.Clear();
_iControl = LINE_PANEL_FLAG;
controlPanel.Controls.Add(linePanel);
linePanel.Controls.Add(backButton);
linePanel.Controls.Add(buttonPanel);
zxjjButton.BackgroundImage = global::Touch.Properties.Resources.zxjsButtonUp;
lcjsButton.BackgroundImage = global::Touch.Properties.Resources.lcjsButtonUp;
ywcxButton.BackgroundImage = global::Touch.Properties.Resources.ywcxButtonUp;
ywblButton.BackgroundImage = global::Touch.Properties.Resources.ywblButtonUp;
pdqpButton.BackgroundImage = global::Touch.Properties.Resources.pdqpButtonDown;
break;
}
default:
{
_iControl = MAIN_PANEL_FLAG;
controlPanel.Controls.Add(introButton);
controlPanel.Controls.Add(flowButton);
controlPanel.Controls.Add(searchButton);
controlPanel.Controls.Add(handleButton);
controlPanel.Controls.Add(lineButton);
controlPanel.Controls.Add(main_MainControl);
break;
}
}
//SendMessage(controlPanel.Handle, WM_SETREDRAW, 1, IntPtr.Zero);//开启重绘
//controlPanel.Refresh();//强制刷新指定控件
}
但是实现后发现 按钮切换这些panel控件的时候,界面闪烁?想请教这个问题如何解决?谢谢