前言
机房合作学习到了好多的新的知识,同时对于制作软件的用户体验有了很大的提高!接下来一起看看小的知识点!
1、int类型
int占32位的时候,最大可以赋值为:2147483647。也就是0x7fffffff。所以当我们输入11位或者大于2147483647的时候系统就会崩溃我们一定要注意这一点!
2、使用list如何判断数据库中的null
这个问题我是真的搞了一个下午,网上对于datable转换数据库中的null有大量的资料,我就不在这里赘述了!我们现在用的是list,判断数据库中的null在list中是如何显示的!
我们的数据库上机表与下机表是放在一起的,正在上机的电脑就是有上机时间没有下机时间,既有上机时间又有下机时间的是上完机然后下机的!现在我要用list遍历下机记录为空的记录,该如何遍历呢:
line.OffDateTime==default(DateTime)); // 表示数据库中的null,括号中是时间日期型,如果我们要查的数据类型为string,那么括号里就是string
list2 = list.FindAll((line) => line.OffDateTime==default(DateTime)); //查找所有下机时间为空的记录
3、过几秒执行 System.Threading.Thread.Sleep(3000);
我们在做软件的时候一定要考虑用户体验,我们在下机的时候,会提示给用户下机成功,但是我此时就想让这个提示出现3秒然后自己关闭,那该怎么半呢,看下边的代码:
System.Threading.Thread.Sleep(30000) //延迟三秒执行
4、三元表达式
这个之前都是在算法中运用,这次在控件之间运用了,感觉确实还是挺好用的,因为这样少写了一些代码,还没有了if else判断!
label2.Text = (!(PublicRule.OnlynumberIscheck(txtUsualRate.Text.Trim()))) ? "只能输入数字,且最多是3位数" : "";
5、TextChanged事件的学习
我们都知道qq中的提示信息没有弹出框,都是输入一个满足一个,比如密码的输入:如果没有空格那么就打个勾,如果长度为8—16个字符,那么就打个勾,如果有了字母,数字,符号至少两种,则在打个勾!这些功能我们是用textChanged事件实现的
下面的代码如果不满足只能输入数字,且最多是3位数则出现提示只能输入数字,且最多是3位数,否则就为空!public就是
private void txtSuperRate_TextChanged(object sender, EventArgs e)
{
label3.Text = (!(PublicRule.OnlynumberIscheck(txtSuperRate.Text.Trim()))) ? "只能输入数字,且最多是3位数" : "";
}
对于.OnlynumberIscheck,这是我们自己封装方法,用的是正则表达式:只要是限制控件内容,全都是正则表达式,这样还是比较方便,想的比较全面的!接下来只给一个例子
public static bool OnlynumberIscheck(string txt)
{
if ((new Regex("^[0-9]{1,3}$")).IsMatch(txt))
{
return true;
}
else
{
return false;
}
}
正则表达式用起来真的是方便,很建议大家使用!
6、数据库遍历转移到程序中遍历
这个算是我们组的一个大的创新了吧,我们之前做的项目都是在数据库中遍历,比如我们先查了学生的个人信息! 然后呢,我们又要注册,注册的时候会判断我们的卡号存不存在,这时候就会在数据库中遍历!这种方式肯定是可行的,但是有时候性能呢,如果有100个人注册,那么就得去数据库遍历一百次,如果有1000个,10000个呢?想想为什么有时候服务器会宕机?
后来我们就想可不可以转移到程序中呢?答案就是完全可以,如果转移到程序中,那么我们只需要用户自己的电脑去遍历了!怎么转换呢,就是将数据库的表查出来放在程序中,通过list自带的方法就可以直接得到想要的结果了,如果对此特别感兴趣,可以看看我的下一篇博客,list高级用法!
7、使MessageBox弹出4秒后自己关闭
这个功能实现在下机,下机我会有一个弹出框提示用户已经下机,可是这个弹出框不会自己变没,微软没有提供此方法,只能自己去引用了,接下是重写了一个方法,使得messagebox可以实现4秒后自己关闭!
[DllImport("user32.dll")]
public static extern int MessageBoxTimeoutA(IntPtr hWnd, string msg, string Caps, int type, int Id, int time);//引用DLL
MessageBoxTimeoutA((IntPtr)0, "亲,恭喜你下机成功!", "消息框", 0, 0, 000);// 直接调用 3秒后自动关闭 父窗口句柄没有直接用0代替
后记
机房合作已经是第三遍了,越多的创新就会有越多的收获