![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
WinForm
SuGarSJL
cainiaoyige
展开
-
WinForm-使用Thread.Sleep(1000);界面卡死解决
很多初学者在写C#程序的时候,需要程序等待某个时间,但是又不想用比较繁琐的线程等操作,因此用Thread.Sleep()函数,但是这个函数在等待过程中会操作界面的卡死,那么,如何能保证既不卡死又能达到等待的功能呢?其实也很简单,用下面的一段代码代替Thread.Sleep()函数即可。Application.DoEvents()的作用:处理所有的当前在消息队列中的Windows消息。响应完其它事之后又回去继续执行刚才的Code (允许窗体在忙时响应 UI 输入)!但是会影响当前代码的执行效率!...转载 2022-08-03 19:56:29 · 1249 阅读 · 0 评论 -
WinFrom-跨线程访问控件
举个例子:新线程(非主线程)访问textBox1。两种方法:取消跨线程调用检查Control.CheckForIllegalCrossThreadCalls = false;用回调在新线程调用的方法中这样写:if (this.textBox1.InvokeRequired){ Action<string> actionDelagate = (value) => { this.textBox1.Text= value; }; this.tex原创 2021-05-18 17:51:26 · 73 阅读 · 0 评论 -
WinForm-用C#自带的Installer Projects打包WinForm项目为exe安装包
1. 开发好要打包的项目2. 安装Microsoft Visual Studio Installer Projects扩展在扩展->管理扩展->联机中搜索并安装。也可在VS扩展官网下载并安装:https://marketplace.visualstudio.com/3. 新建Setup Project项目在解决方案右击,选择添加->新建项目,然后新建一个Setup Project项目。将要打包的项目依赖的文件添加到Setup Project项目的Applicat原创 2021-03-25 15:34:43 · 1797 阅读 · 2 评论 -
WinForm-解决Winform窗体,当控件多,加载比较慢,比较卡的问题
protected override CreateParams CreateParams { get { CreateParams cp = base.CreateParams; cp.ExStyle |= 0x02000000; // 用双缓冲绘制窗口的所有子控件 return cp; } }把这段代码放到需加载多控件的窗体类中即可。...原创 2020-09-29 22:16:31 · 1846 阅读 · 8 评论 -
WinFrom-控件大小及字号随窗体大小变化等比例变化
代码:思想:算出窗体大小变化前后的长宽比,控件的长宽也按这个比例缩放即可 public partial class NForm : Form { #region 控件缩放 double formWidth;//窗体原始宽度 double formHeight;//窗体原始高度 double scaleX;//水平缩放比例 double scaleY;//垂直缩放比例 Dictionary<st原创 2020-09-29 21:27:07 · 487 阅读 · 0 评论 -
WinForm-停靠窗体
库:DockPanelSuite1.NuGet包管理=>安装DockPanelSuite2.工具箱=>DockPanel Suite=>将DockPanel拖到主窗体(假设为Form1)上3.设置DockPanelDock = FillDocumentStyle = DockingMdi4.设置主窗体(Form1)IsMdiContainer = true5.新建用于停靠的窗体(Form2)Form2要继承自 DockContentusing Syste原创 2020-09-14 21:06:25 · 1754 阅读 · 1 评论 -
WinForm-获取某个窗体/容中的所有控件,然后操作按类型操作
比如说有一个GroupBox。其中放有多个单选按钮RadioButton,它们都是用来进行一类操作,比如修改字体。最简单的想法是每个单选按钮都写一个CheckedChanged事件,但是,当我们增加了字体选项时,得再加一个相应的方法,因此代码不是封闭的。代码封闭:个人理解:不让每次新增功能时都新增一次与原先写过的相同或相似功能重复的代码,应实现代码的复用性。此时就可以使用GroupBox.Controls获得其中的左右控件,但后统一操作即可。private void ModifyFont()原创 2020-09-14 13:31:13 · 1693 阅读 · 0 评论 -
WinForm-通过副窗体修改主窗体内容
1.在主窗体Show副窗体时var frm2 = new Form2();frm2.Show(this);//frm2.ShowDialog(this);2.在副窗体通过事件操作主窗体控件比如修改Form1(主窗体)的Text属性注意:要先将Form1的label1改为public的(在Designer类中)(this.Owner as Form1).label1.Text = "XXX";...原创 2020-09-14 12:21:15 · 393 阅读 · 0 评论