zoukankan      html  css  js  c++  java
  • 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属性赋值,窗口即会自动关闭,

    通常情况自己关闭也可以,不过调用了CloseDispose方法后,弹出的窗口对象会销毁,此时再调用它的其它属性什么的,会报"无法访问已释放的资源"的异常

     

    技巧3,临时挂起控件更新

    同技巧1一样,几乎所有的"容器控件"都有SuspendLayout()方法和ResumeLayout()方法,这两个方法是做什么的呢?

    这两个方法在XXX.Designer.cs代码中最常见,就是设计窗体时VS自动生成的代码里,它是临时挂起控件更新,然后修改控件属性,如添加子控件,改变大小等等操作,全部操作完成后再调用ResumeLayout(false)方法,这样将控件"只更新一次"即可,效率上会提高不了,有点像拼接N个INSERT 语句,然后只连接一次数据库执行全部,而不是连接N次,执行N次,效率自然不咋地了,呵呵!

    转载自:http://www.cnblogs.com/kkun/archive/2009/02/11/1388512.html

  • 相关阅读:
    Hihocoder 1275 扫地机器人 计算几何
    CodeForces 771C Bear and Tree Jumps 树形DP
    CodeForces 778D Parquet Re-laying 构造
    CodeForces 785E Anton and Permutation 分块
    CodeForces 785D Anton and School
    CodeForces 785C Anton and Fairy Tale 二分
    Hexo Next 接入 google AdSense 广告
    如何统计 Hexo 网站的访问地区和IP
    Design and Implementation of Global Path Planning System for Unmanned Surface Vehicle among Multiple Task Points
    通过ODBC接口访问人大金仓数据库
  • 原文地址:https://www.cnblogs.com/rsls/p/4364119.html
Copyright © 2011-2022 走看看