winfrom开发小技巧三则
技巧1,合理使用控件的Tag属性
几乎所有winform控件有都名为object类型的Tag属性,此属性多数情况下用来承载完整的数据源,相当于WEBFORM页面中hidden控件的作用,举个简单的例子

textBox1.Text=info.UserName;
上述代码非常简单,将实体的属性赋值给一个文本框,而此实体还有其它属性,文本框无法显示那么多了,不过一会儿其它地方还需要使用实体的其它对象,那此时就可以把该实体直接赋给文本框的Tag属性,类型为object,代码如下:

textBox1.Text = info.UserName;
textBox1.Tag = info;
这样再次使用实体的时候就可以从控件的Tag属性中取了,如

PersonEntity info = textBox1.Tag as PersonEntity;
当然了,也完全可以把info设计为属性,但有时候这样做可能要添加很多这样的属性,此时就是Tag的用武之地了
技巧2,模态窗口使用DialogResult关闭窗口
如下应用场景,需要弹出一个窗口来,其中需要客户输入处理一些数据后返回,代码如下

FrmConnection frmConnection = new FrmConnection();
if( frmConnection.ShowDialog() == DialogResult.OK
&& frmConnection.Info != null ) {
frmDataBase.Info = frmConnection.Info;
InitializeCustomControl( frmDataBase );
}
在弹出的窗口中,给它自己的DialogResult属性赋值,窗口即会自动关闭,
通常情况自己关闭也可以,不过调用了Close或Dispose方法后,弹出的窗口对象会销毁,此时再调用它的其它属性什么的,会报"无法访问已释放的资源"的异常
技巧3,临时挂起控件更新
同技巧1一样,几乎所有的"容器控件"都有SuspendLayout()方法和ResumeLayout()方法,这两个方法是做什么的呢?
这两个方法在XXX.Designer.cs代码中最常见,就是设计窗体时VS自动生成的代码里,它是临时挂起控件更新,然后修改控件属性,如添加子控件,改变大小等等操作,全部操作完成后再调用ResumeLayout(false)方法,这样将控件"只更新一次"即可,效率上会提高不了,有点像拼接N个INSERT 语句,然后只连接一次数据库执行全部,而不是连接N次,执行N次,效率自然不咋地了,呵呵!
记录学习中的点点滴滴,一次书写,终生享用,人人为我,我为人人
------------------------------------------
除非特别声明,文章均为原创,版权与博客园共有,转载请保留出处
BUY ME COFFEE


【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架