零碎知识点汇总

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

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>

零碎知识点汇总_第1张图片

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

零碎知识点汇总_第2张图片

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


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

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

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

4.关于界面优化的代码

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

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

窗体加载:
 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,这个属性是当窗体打开是此空间是否获得焦点。

零碎知识点汇总_第4张图片

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

总结

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


你可能感兴趣的:(零碎知识点汇总)