吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 869|回复: 29
收起左侧

[经验求助] 写了个C#winform界面,我裂开了,界面卡顿严重

[复制链接]
omm 发表于 2024-7-1 11:01
100吾爱币
本人C#菜鸟一个,硬着头皮写了一个C#winform界面,由于控件实在太多了,界面在退到后台或者最小化再恢复后,就各种卡顿。刚开始没有加cskin的界面库,界面启动的时候都会很多黑框刷新,网上很多方法都试了,还是没什么大的改善,后来加上cskin的界面库,最起码启动的时候不会黑框刷新,只是在界面在退到后台或者最小化再恢复后界面就开始各种卡顿,问题已经困扰了很久了,实在不知道该怎么办了,来这里求助各位,看看还能不能再进一步改善,先感谢大家了

代码工程(vs 2022,   .net 4.8,     1920x1080 100%分辨率调试)
https://wwz.lanzouj.com/iC0c4236zkif

运行视频
https://wwz.lanzouj.com/iRMkU236zr7g

最佳答案

查看完整内容

我之前用c sharp写 ui也是这样,感觉控件也不算那么那么复杂 写复杂了后不光是ui 背后处理的数据稍微复杂一点 也卡,开线程也不行 后来放弃了 用mfc写了

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

4561fef 发表于 2024-7-1 11:01
我之前用c sharp写 ui也是这样,感觉控件也不算那么那么复杂
写复杂了后不光是ui  背后处理的数据稍微复杂一点 也卡,开线程也不行
后来放弃了  用mfc写了

免费评分

参与人数 1吾爱币 +1 收起 理由
omm + 1 谢谢@Thanks!

查看全部评分

wuchen9527 发表于 2024-7-1 17:57
zazakgfh 发表于 2024-7-1 19:27
写几个界面放tabcontrol里面,几个页面同时存在于内存
切换页面显示,而不是修改页面内容
你这样每次都要画一次,不卡才怪

免费评分

参与人数 1吾爱币 +1 收起 理由
omm + 1 那么具体要如何写几个界面,而不是用tabcontrol呢?求教求教

查看全部评分

sunnychen 发表于 2024-7-1 20:43
减少控件数量,使用DataGridView控件来显示大量数据,而不是使用多个Label或TextBox控件。

免费评分

参与人数 1热心值 +1 收起 理由
omm + 1 主要是要在一个页面上显示的内容太多了,提的要求就是要同时观察,另外试了.

查看全部评分

 楼主| omm 发表于 2024-7-2 07:44
wuchen9527 发表于 2024-7-1 17:57
先插个眼,有时间看一下

感谢您,感谢关注
sunnychen 发表于 2024-7-2 08:51
我的意思是让你用表格显示数据,而不是用label和textbox ,表格在c#中就是DataGridView控件
 楼主| omm 发表于 2024-7-2 09:07
sunnychen 发表于 2024-7-2 08:51
我的意思是让你用表格显示数据,而不是用label和textbox ,表格在c#中就是DataGridView控件

嗯嗯,目前就只有第一页label和textbox多一些,后面我改一下,但是tabcontorl切页的时候还是会重刷,datagridview也会卡顿的,就像是第二页;刚启动的时候,界面还是延迟刷新,最起码不闪烁,退出到后台或最小化恢复后就不行了,我在想,如果能再调整一下,让界面退出到后台或最小化恢复后还能和刚启动的时候一样,就好了
sunnychen 发表于 2024-7-2 13:37
可以尝试启用双缓存来改善窗口的刷新性能。
在窗口的构造函数中,设置表单的双缓存属性:
public Form1()
{
    InitializeComponent();
    this.DoubleBuffered = true;
    this.SetStyle(ControlStyles.OptimizedDoubleBuffer, true);
    this.SetStyle(ControlStyles.AllPaintingInWmPaint, true);
    this.SetStyle(ControlStyles.UserPaint, true);
    this.UpdateStyles();
}

免费评分

参与人数 1热心值 +1 收起 理由
omm + 1 谢谢@Thanks!

查看全部评分

zazakgfh 发表于 2024-7-2 22:15
就是直接写几个页面,就是几个Form 窗口
然后再主窗口 创建 几个 窗口的实例
主窗口放一个panel,那几个页面的实例就全部放在那个panel 里面,但是同一时间只显示一个页面
有个切换页面按钮,点击的时候切换页面,其他的页面隐藏
这样就不用每次都绘制按钮文本之类的

免费评分

参与人数 1吾爱币 +1 收起 理由
omm + 1 谢谢@Thanks!

查看全部评分

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-14 20:46

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表