C#、Java中的一些小功能点总结(持续更新......)
前言:在项目中,有时候一些小的功能点,总是容易让人忽略,但是这些功能加在项目中往往十分的有用,因此笔者在这里总结项目中遇到的一些实用的小功能点,以备用,并持续更新......
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中的一些小功能点总结(持续更新......)的更多相关文章
- Idea中快捷键与小技巧的总结-->持续更新
1.Scala类或单例对象中快速声明实例对象: eg. new SparkContext(conf).var 系统会自动提示,可以自动补全,如图: 2.ctrl+i与ctrl+o的区别: ctrl + ...
- 网站开发---js与java实现的一些小功能
记录一下网站开发过程中的一些小功能 1.js获取当前年份: <span>Copyright © 2017-<script>document.write( new Date(). ...
- C#、Java中的一些小知识点总结(持续更新......)
前言:在项目中,有时候一些小的知识,总是容易让人忽略,但是这些功能加在项目中往往十分的有用,因此笔者在这里总结项目中遇到的一些实用的小知识点,以备用,并持续更新...... 1.禁用DataGridV ...
- 自己实现java中Iterator(迭代器功能)
今天躺在床上忽然想到一个问题,迭代器的代码是如何实现的?于是乎不由自主的爬起来敲两行代码. List<String> list=new ArrayList<>(2); list ...
- Java 与 C++ 不一样的地方(持续更新中...)
本文仅以记录 Java 与 C++ 不同之处,以备随时查询. Java 程序运行机制 Java 是一门编译解释型的语言,即它在运行的过程中既需要编译也需要解释.如下图表示的是 Java 程序运行机制: ...
- java中易遗忘的知识,不定时更新……
如果有人问你: "子类继承父类所有非私有(private)的属性和方法这句话对吗?", 如果你回答对的, 那我只能说too young too simple! 关于代码块和成员变量 ...
- java高级&资深&专家面试题-行走江湖必备-持续更新ing
行走江湖必备一份面试题,这里给大家整理了一套.0面试官最喜欢问的问题或者出场率较高的面试题,助校招或者社招路上的你一臂之力! 首先我们需要明白一个事实,招聘的一个很关键的因素是在给自己找未来的同事,同 ...
- iOS --- 总结Objective-C中经常使用的宏定义(持续更新中)
将iOS开发中经常使用的宏定义整理例如以下,仅包括Objective-C. 而对于Swift,不能使用宏,则能够定义全局函数或者extension.请參考博客iOS - 总结Swift中经常使用的全局 ...
- 。Java中的一些小细节
1.main方法. ------任何一个Java程序都有一个main方法,它是程序的入口. ------当执行 “ java + 类名 “ 这个命令时,JVM就会去加载这个类,并且寻找这个类中的m ...
随机推荐
- RestServer 2.0 正式版发布
RestServer 2.0 正式版发布 使用许可&版权说明 在保持本软件完整的情况下可以将本软件用于任何商业用途. 本软件可以自由传播,但是请保持软件相关文件和说明文档完整. 未经许可不得将 ...
- OpenCV4Android
前文曾详细探讨了关于OpenCV的使用,原本以为天下已太平.但不断有人反应依然配不好OpenCV4Android,不能得心应手的在Android上使用OpenCV,大量的精力都浪费在摸索配置上.尤其是 ...
- 暑假练习赛 007 E - Pairs
E - Pairs Description standard input/outputStatements In the secret book of ACM, it’s said: “Glory f ...
- Eddy's picture(最小生成树)
Eddy's picture Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Tota ...
- scanf和cin性能的比较
我的实验机器配置是: 处理器:Intel(R) Core(TM) i3-7100U CPU @ 2.40GHz 2.40GHz 随机访问存储器:4.00GB 操作系统:Windows10 集成开发环境 ...
- CQRS微服务架构模式
什么是微服务? 这是维基百科里面的定义:“微服务是面向服务架构(SOA)架构风格的一种变体,它将应用程序构建为一系列松散耦合的服务.在微服务体系结构中,服务应该是细粒度的,协议应该是轻量级的.将应用 ...
- JAVAscript学习笔记 jsDOM 第五节 (原创) 参考js使用表
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Problem B: 农夫果园 简单点,出题的方式简单点
我走过最长的路,就是教主的套路#include <iostream> #include <string> using namespace std; class Fruit { ...
- Javascript数组求和的方法总结 以及由斐波那契数列得到的启发
一次面试中,面试官要求用三种不同的Javascript方法进行一个数字数组的求和,当时思来想去只想到了使用循环这一种笨方法,因此面试比较失败,在这里总结了六种Javascript进行数组求和的方法,以 ...
- wkt转换geojson
应用配置 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.o ...