前言:在项目中,有时候一些小的功能点,总是容易让人忽略,但是这些功能加在项目中往往十分的有用,因此笔者在这里总结项目中遇到的一些实用的小功能点,以备用,并持续更新......

1.禁用DataGridView表头的排序功能

        /// <summary>
         /// 禁止点击列表头进行排序
         /// </summary>
         /// <param name="dgv">当前DataGridView控件</param>
         private void DisableSortOrder(DataGridView dgv)
         {
             ; i < dgv.ColumnCount; i++)
             {
                 dgv.Columns[i].SortMode = DataGridViewColumnSortMode.NotSortable;
             }
         }

2.屏蔽双击标题栏窗口变小、点击标题栏移动窗口事件

         /// <summary>
         /// 屏蔽双击标题栏变小事件、点击标题栏移动窗口事件
         /// </summary>
         /// <param name="m"></param>
         protected override void WndProc(ref Message m)
         {
             //双击标题栏、移动窗口事件
             if (m.Msg != 0xA3 && m.Msg != 0x0003 && m.WParam != (IntPtr)0xF012)
             {
                 base.WndProc(ref m);
             }

         }

注:在需要不被移动的窗口中添加上述代码,其他具体消息,可查询相关资料,进行控制。

m.Msg = 0xA3  -> 双击标题栏消息

m.Msg = 0x0003 && m.WParam = (IntPtr)0xF012 -> 移动窗体消息

3. 登录时,当正确输入口令后,关闭登录窗口

注:这个功能其实还比较重要,因为如果我们直接this.hide()或this.close()是不行的,这是就需要一个小技巧进行控制,具体如下代码:

1.在Program.cs中如下:

  LoginForm lf = new LoginForm();
  lf.ShowDialog();
  if (lf.DialogResult == DialogResult.OK)
       Application.Run(new SelectItemForm());
2.然后在登录窗口中,当登录成功后进行如下控制:

this.DialogResult = DialogResult.OK;
       this.Close();

通过以上两步就可以实现关闭登录界面,从而转到所需的主界面中。

4.在使用datagridview进行数据绑定的时候,第一次进入界面数据加载很慢,起初以为是sql语句或者DataSource绑定的问题,但是通过打印运行时间,发现花费时间不到1s。但是笔者在使用使用datagridview控件同时,界面上还有许多其他的控件,并且数据加载时候总是第一次很慢,后面就不会出现该情况,于是想到先加载控件,然后再进行数据的加载,因此通过一个线程进行数据的加载,并配合loading框,这样就可以达到先把其他控件显示出来,然后再进行数据显示,就不会出现那种生硬的数据加载形式,给用户一个友好的界面。

5.接4问题,原来使用数据绑定时,datagridview中的表头的显示文本来自于数据库中的列名,但在4问题中因为是延迟加载,所以datagridview会有一个短暂的空表头形式,给人不友好的显示,于是想到给datagridview一个固定的列名称,然后进行对应的加载即可。具体做法:在datagridview属性中点击Columns集合,将每一列要显示的值与查询出来的字段进行绑定即可。通过4和5就可以实现一个延迟加载,先加载控件,然后在进行数据的加载,而不是等待数据控件加载完后,在加载其他控件,这样会造成一种非常不友好的界面响应。

6.在winform中,线程间调用控件,笔者喜欢使用委托进行相关调用,具体如下:

首先定义一个处理ui控件的委托 public delegate void  disposeUIinfo();

然后在具体函数中利用匿名委托进行相关调用:

 public void test()
 {
     if(ui.InvokeRequired)
     {
       disposeUIinfo disui=new disposeUIinfo(new Action(()=>
       {
             // do something......

        }));
       ui.Invoke(disui);
      }
     else
     {
          //do something......
     }
 }

注:这里使用了Action和Lambda表达式。

7.在WinForm中由于调用的封装的UI控件,导致无论怎么设置窗体的位置都不能居中,可以在窗体的构造函数中加入如下代码即可居中:

 this.StartPosition = FormStartPosition.Manual;
  - , Screen.PrimaryScreen.WorkingArea.Height /  - );

持续更新中......by Shawn Chen 2017.7.24 晚

 

C#、Java中的一些小功能点总结(持续更新......)的更多相关文章

  1. Idea中快捷键与小技巧的总结-->持续更新

    1.Scala类或单例对象中快速声明实例对象: eg. new SparkContext(conf).var 系统会自动提示,可以自动补全,如图: 2.ctrl+i与ctrl+o的区别: ctrl + ...

  2. 网站开发---js与java实现的一些小功能

    记录一下网站开发过程中的一些小功能 1.js获取当前年份: <span>Copyright © 2017-<script>document.write( new Date(). ...

  3. C#、Java中的一些小知识点总结(持续更新......)

    前言:在项目中,有时候一些小的知识,总是容易让人忽略,但是这些功能加在项目中往往十分的有用,因此笔者在这里总结项目中遇到的一些实用的小知识点,以备用,并持续更新...... 1.禁用DataGridV ...

  4. 自己实现java中Iterator(迭代器功能)

    今天躺在床上忽然想到一个问题,迭代器的代码是如何实现的?于是乎不由自主的爬起来敲两行代码. List<String> list=new ArrayList<>(2); list ...

  5. Java 与 C++ 不一样的地方(持续更新中...)

    本文仅以记录 Java 与 C++ 不同之处,以备随时查询. Java 程序运行机制 Java 是一门编译解释型的语言,即它在运行的过程中既需要编译也需要解释.如下图表示的是 Java 程序运行机制: ...

  6. java中易遗忘的知识,不定时更新……

    如果有人问你: "子类继承父类所有非私有(private)的属性和方法这句话对吗?", 如果你回答对的, 那我只能说too young too simple! 关于代码块和成员变量 ...

  7. java高级&资深&专家面试题-行走江湖必备-持续更新ing

    行走江湖必备一份面试题,这里给大家整理了一套.0面试官最喜欢问的问题或者出场率较高的面试题,助校招或者社招路上的你一臂之力! 首先我们需要明白一个事实,招聘的一个很关键的因素是在给自己找未来的同事,同 ...

  8. iOS --- 总结Objective-C中经常使用的宏定义(持续更新中)

    将iOS开发中经常使用的宏定义整理例如以下,仅包括Objective-C. 而对于Swift,不能使用宏,则能够定义全局函数或者extension.请參考博客iOS - 总结Swift中经常使用的全局 ...

  9. 。Java中的一些小细节

    1.main方法. ------任何一个Java程序都有一个main方法,它是程序的入口. ------当执行  “ java + 类名 “  这个命令时,JVM就会去加载这个类,并且寻找这个类中的m ...

随机推荐

  1. Ionic3 打包并签名Android-App

    ionic cordova build android --prod --release 此时,在项目根目录中看下看到生成的apk文件:platforms\android\build\outputs\ ...

  2. Winsock网络编程笔记(3)----基于UDP的server和client

    在上一篇随笔中,对Winsock中基于tcp面向连接的Server和Client通信进行了说明,但是,Winsock中,Server和Client间还可以通过无连接通信,也就是采用UDP协议.. 因此 ...

  3. poj 2720 Last Digits

    Last Digits Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 2233   Accepted: 474 Descri ...

  4. Problem I

    Problem Description Queues and Priority Queues are data structures which are known to most computer ...

  5. 磁盘管理 之 parted命令添加swap,文件系统

    第1章 磁盘管理 1.1 必须要了解的. 1.1.1 ps aux 命令中 RSS 与VSZ的含义 rss 进程占用的物理内存的大小 单位:kb : vsz 进程占用的虚拟的内存大小(物理内存+swa ...

  6. 特征提取方法: one-hot 和 IF-IDF

    one-hot 和 IF-IDF是目前最为常见的用于提取文本特征的方法,本文主要介绍两种方法的思想以及优缺点. 1. one-hot 1.1 one-hot编码 什么是one-hot编码?one-ho ...

  7. 初窥图像识别与k-means算法

    前段时间做了一个车型识别的小项目,思路是利用k-means算法以及词袋模型来做的. 近年来图像识别的方法非常非常多,这边只记录一下我那个项目的思路,核心思想是k-means算法和词汇树. 很遗憾没有做 ...

  8. vs2015添加T4模版

    <#@ template language="C#" debug="false" hostspecific="true"#> & ...

  9. word中表格第一列序号的设置

    表格中序号问题 1.新建一个表格.第一列选择编号后,编号后有tab,如下图 2.选中表格的编号,点击新建列表样式, 3.将编号后的字符改成nothing,在将单元格改成居中即可 4.在将单元格改成居中 ...

  10. 关于vue 框架与后台框架的混合使用的尝试

    这几天我在研究前台框架和后台框架融合的问题,进行了一些尝试; 我前台选择的是 vue,当然也可以选择 react 等其他 mvvm 框架,不过 vue 对于我来说是最熟悉的; 后台话,我选择的是 ph ...