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
我的窗口控件比较多网上查的方法都没有效果啊。
方法一: 没什么效果
如果说是防止加载了大图片闪烁的话,楼主不妨使用双缓冲的方式。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
解决方案 »
- web.config配置错误
- 关于winform在网上邻居这种局域网中运行的问题!急!在线等!
- 高手讲解下!!c# 函数参数传址于传值的问题(函数是封装在Web里服务器的方法)
- 这两天心情不爽,散点分!
- System.IO.File.Delete("文件名") 不能删除只读文件,请问如何强制删除文件?
- 关于动态的添加自定义控件的一个问题
- 在C#中怎么调用VC++编写的dll呀?(PPC编程)
- exe文件调用web页面返回错误,但是页面访问没有问题
- 如何使用传输对象副本的方法跨应用程序域
- 请教:水晶报表中,怎样实现某一列自动增加1
- Winform如何播放MP3文件呢
- 如何给VS2010 Express安装离线msdn?
http://msdn.microsoft.com/zh-cn/library/3t7htc9c%28v=vs.80%29.aspx
2.不要将控件的背景设为透明这是 winform 的劣根性,改不了的,所以现在都换 wpf 了,手机开发用 silverlight
f.Dock = DockStyle.Fill;以上两句话的位置换一下试试呢?一般来说,Show 是放到最后的。
Invoke
多线程不怎么会用
能教下我吗?
[email protected] 如果有案例 发一份