零碎知识点汇总

来源:互联网 发布:虚拟扫描仪软件 编辑:程序博客网 时间:2024/05/17 21:41

       这次合作,我们在讨论的时候发现,好多零碎的知识当时重构的时候查过,但是这次再用,还是记不住,也没有做总结,所以还得去查,所以这次就总结一些我在重构的时候遇到的一些小问题,和对应的解决方法,亦或是通过这个问题了解到的小知识。

1.算钱的时候遇到的Int函数

  1. Int(X)函数:数轴上向零取整,也就是不大于x的最大整数。
  2. CInt(X)函数:四舍五入取整,无论正数还是负数。但是遇到0.5的情况,则往往取偶数值。

举例:Int(4.6)=4    Int(-4.6)=-5
举例:CInt(1.5)=2 CInt(1.4)=1 CInt(1.6)=2


2.数据查询遇到的NULL


       机房中有一个用例是查询正在工作的教师,教师在登录的时候,向工作记录中添加的是登录信息,而登出信息的字段是NULL值,所以当我想要查询的时候,我写的语句是这样的:
<span style="font-size:18px;">select * from T_WorkLog where UserID=1 and logoutDate =Null</span>



后来我改了一下sql语句,发现查到了这条数据:



原因:NULL表达的意思不是零,而是不可知,不确定,所以我们不能用=,<>,来进行判断,因为NULL与任何类型的值进行比较或运算的结果都是UnKnow,其实在自考中我们已经学过了这个小知识,但是在实际应用中又经常忘记


3.有关继承窗体的小设置

       继承窗体中要想要更改父窗体的控件,我们必须将父窗体上的控件的modifiers 改为 protected,这个属性有五中不同的修饰符,分别是:Public、Protected 、Protected Internal、Internal、Privated,下边详细的讲解一下这五中修饰符在c#中的含义与作用
  • Public:公有的,可以被任意存取
  • Protected:只可以被本类和其继承子类存取
  • Protected Internal:唯一一种组合限制修饰符,它只可以被本程序集内所有类和这些类的继承自己所存取
  • Internal:只可以被本程序集内所有的类存取
  • Privated:私有的,只可以被本类所存取。

        这五中访问修饰符相当于给外界提供的五中不同的“钥匙”,这就保证了类中数据的安全性。
        类本身有两道防线,一是命名空间(namespace),另一个是程序集(assembly),成员则有三道防线,因为类也是成员的一道方向,如果外界想要访问类中的成员,就要看该成员的修饰符是不是可以给你提供一把访问的钥匙。

4.关于界面优化的代码

       我们在注册或者登录的时候,经常会见到textbox中会有浅灰色的提示文字(如下图),让文本框获得焦点的时候,该提示文字消失,当该文本框失去焦点的时候,如果该文本框没有键入内容,该提示文字又会再次出现,如何实现呢?其实很简单,只要熟悉控件的基本属性,很容易就做出来了。


首先我们要写两个方法,分别是控件获得焦点和失去焦点

窗体加载:
 private void frmAddUser_Load(object sender, EventArgs e)        {            cboUserLevel.Items.Add("操作员");            cboUserLevel.Items.Add("管理员");            txtUserName.Focus();                        txtUserID.Text = "请输入8位以内用户名";            txtUserID.Font = new Font(txtUserID.Font.Name, 9);            txtUserID.ForeColor = Color.Gray;            txtUserPWD1.Text = "请输入16位以内密码";            txtUserPWD1.Font = new Font(txtUserID.Font.Name, 9);            txtUserPWD1.ForeColor = Color.Gray;            txtUserPWD1.PasswordChar = Convert.ToChar(0);              }

获得焦点:

  private void txtUserID_Enter(object sender, EventArgs e)        {            txtUserID.Text = "";            txtUserID.ForeColor = System.Drawing.Color.Black;            txtUserID.Font = new Font(txtUserID.Font.Name, 12);        }               private void txtUserPWD1_Enter(object sender, EventArgs e)        {            txtUserPWD1.Text = "";            txtUserPWD1.ForeColor = System.Drawing.Color.Black;            txtUserPWD1.Font = new Font(txtUserPWD1.Font.Name, 12);        }

失去焦点:

  private void txtUserPWD1_Leave(object sender, EventArgs e)        {            if (txtUserPWD1.Text == "")            {                txtUserPWD1.ForeColor = System.Drawing.Color.Gray;                txtUserPWD1.Text = "请输入16位以内密码";                txtUserPWD1.Font = new Font(txtUserPWD1.Font.Name, 9);                txtUserPWD1.PasswordChar = Convert.ToChar(0);            }        }        private void txtUserID_Leave(object sender, EventArgs e)        {            if (txtUserID.Text == "")            {                txtUserID.ForeColor = System.Drawing.Color.Gray;                txtUserID.Text = "请输入12位以内用户名";                txtUserID.Font = new Font(txtUserID.Font.Name, 9);            }        }

        写完之后发现一个问题,窗体一加载,焦点就获到了txtUserID上,不管我怎么在窗体加载中写让别的控件.focus都没有用,然后就发现了窗体上有一个属性,一定要把这个属性改掉才可以,将TabStop改为false,这个属性是当窗体打开是此空间是否获得焦点。



       这样这个小小的提示功能就完成了

总结

     在机房合作的时候,就会发现,有很多东西,我们当时不会,但是当时查了忘记了,没有好好的总结,也许是看不起这些零碎的小知识,但是正是这些微不足道的小的知识点推进了我们走向终点的脚步


1 0
原创粉丝点击