c# winform程序 窗口切换 乱闪 怎么解决
c# winform程序 窗口切换 乱闪 怎么解决
我的窗口控件比较多
网上查的方法都没有效果啊。
方法一: 没什么效果
如果说是防止加载了大图片闪烁的话,楼主不妨使用双缓冲的方式。PAINT事件里写上:
SetStyle(ControlStyles.UserPaint, true);
SetStyle(ControlStyles.AllPaintingInWmPaint, true); // 禁止擦除背景.
SetStyle(ControlStyles.DoubleBuffer, true); // 双缓冲
方法二:阻止重绘和恢复重绘。
具体点
[DllImport("User32.dll", CharSet=CharSet.Auto, SetLastError=true)]
internalstaticexternint SendMessage(IntPtr hwnd, int msg, int wParam, int lParam);
//开始对控件操作
禁止重绘:SendMessage(禁止重绘的控件.Handle, 11, 0, 0);
//对控件的操作过程
恢复重绘:SendMessage(恢复重绘的控件.Handle, 11, -1, 0);
这个方法不知道怎么用啊??
这是我的程序 窗口切换 方法:
#region 窗体切换 函数
/// <summary>
/// 窗体切换 函数
/// </summary>
/// <param name="f"></param>
public void TurnFormVisible(Form f)
{
frmPEDestal.Visible = false;//台座信息
frmNUMRules.Visible = false; //节段编号规则
frmDESignLine.Visible = false;//线形设计-总体情况
frmCENterline.Visible = false;//设计线形 平曲线 竖曲线
frmSEGmentDefinition.Visible = false;//节段定义
frmSEGmentInformation.Visible = false;//节段信息
frmCHAinStructure.Visible = false;//链式结构
frmJOIntCross.Visible = false;//联跨
f.Visible = true;
f.TopLevel = false; // 不是最顶层窗体
pnlEmbed.Controls.Add(f); // 添加到 Panel中
f.Show(); // 显示
f.Dock = DockStyle.Fill;
}
#endregion