首页 > 代码库 > 今天小小的总结一下最近的问题
今天小小的总结一下最近的问题
嘿嘿,每一天持续自由学习中,但是真的是感觉这样的一周过去啦,没有学习什么,只是自己在学习一些自己想要学习的,虽然也好啦,但是感觉很不舒服,没有按照课程的内容走,真的希望这周快点过去的啦,今天来学校只是坐在这里把前几天的小程序中的错误改改啦,然后想一想,既然完成啦,就写一写这个小程序中学到的东西啦,东西不多,但是希望自己下一次在做程序时间能够有更深的印象啦,能够不再询问的啦,嘿嘿,好啦,下面就总结对于我这样的初学者需要注意的问题啦。
一.密码加密问题
我们在存储注册用户的密码时间一般在数据库中不想被看到,那么我们可以使得密码加密啦,简单的说下使用MD5加密的方法:
string pwd = this.textBox1.Text; MD5 md5 = new MD5CryptoServiceProvider(); //创建MD5的加密对象 byte[] bytes = Encoding.Default.GetBytes(pwd);//把要进行MD5加密的字符串转换成字节数组 byte[] bytess = md5.ComputeHash(bytes); pwd = BitConverter.ToString(bytess).Replace("-", "");
在这里我们在文本框中获取密码,然后实例化一个类MD5,然后是我们需要对编码方式处理一下的啦,以不至于出现乱码啦,还有最好在后面添加转换为小写的方法(ToLower()),我们使用MD5中的ComputeHash方法可以使密码加密的啦,具体就是这样的思想吧,嘿嘿。
二.页面可以轮回加载
在这里我刚开始时间,每次删除一条注册信息,还要重新启动,感觉好麻烦,就在想应该怎样才能删除一条信息,然后重新返回一个新的值,就是不再显示删除信息的信息那,只是想到啦让页面加载啦,但是没有成功,最后问老师啦,原来就这样啦,和跳转页面一样的啦,只是重新展示一下页面啦,然后把当前现实的页面隐藏就可以啦,嘿嘿,这是自己没有想到的啦。现在知道啦,以后就可以让页面有一个连贯性啦,嘿嘿。
三.鼠标的简单事件
private void txtname_MouseEnter_1(object sender, EventArgs e) { this.txtname.Text = string.Empty; this.txtname.ForeColor = Color.Black; } private void textBox1_MouseEnter_1(object sender, EventArgs e) { this.textBox1.Text = string.Empty; this.textBox1.PasswordChar = ‘*‘; this.textBox1.ForeColor = Color.Black; }
在这里我们可以设置文本框的属性啦,当然可以在窗体的空间上面直接修改属性默认值为用户名,密码即可,然后改变一下字体颜色,现在在后台页面上面实现其改变其属性啦,首先当我们鼠标进入时间我们可以让字体隐藏啦,然后输入我们要输入的信息啦,在这里我们就需要对文本框中的鼠标进入事件进行写一个方法啦,当鼠标进入时间我们使文本框为空,另外还需要改变我们输入的信息的字体的颜色,当然密码依然如粗,只不过我们需要对密码现实的样式设置一下,可以设置为*显示啦,嘿嘿,我们刚开始对于这些设计都是没有注意的啦,嘿嘿,以后再写登录时间可以添加的啦。
四.使用dateTimePicker1控件计算年龄的方法
string birthday = this.dateTimePicker1.Text; int age = DateTime.Now.Year - DateTime.Parse(birthday).Year; //通过生日求出年纪
bool sex = this.radioButton1.Checked ? true : false;
上面的三个问题都是在登录界面需要注意的啦,那么这个是在注册页面啦,我们在注册信息时间有时间注册的是我们的出生年月日啦,而在数据库中我们存储的是我们的年龄啦,嘿嘿,这时间的我们就需要处理一下注册用户的出生年月日啦,就是通过上面的两行代码即可实现我们存储的年龄啦,首先通过时间控件获取出生年月日,然后获取当前时间的年以及出生年月日的年,上面的年龄即可实现啦,嘿嘿;而我们获取性别时间可以使用一个三元表达式,这样更加方便啦,嘿嘿,把这个写出来只是想加深下印象啦。
五.Id的获取
string one =this.listBox1.SelectedItem.ToString(); //获取ListBox中的其中一项,然后把它装变为字符串 string[] two = one.Split(‘,‘); //字符串的处理可以使用方法Split分割,然后用数组存储啦 int id = int.Parse(two[0]); //获取第一项即可
在这里其实就是我们注册的信息在ListBox中显示,如果我们需要修改哪一项内容,那么就需要选中该条信息啦,在这里我们需要把选中的信息显示在更改页面上面的啦,注册时间可以直接注册,可更改信息时间注册用户的信息是显示的,在这里我们可以通过获取Id然后查询该用户的所有信息,然后显示在更该页面上面,这里我们就需要注意应该怎样获取id的啦,像上面图片所示,我们需要获取Id,可以使用分割的啦,刚开始使用的是SubString(0,0)方法截取id,那时间只考虑啦id是以为数字的,没注意,当id两位数字、时间获取的id都是1,于是考虑使用Split(‘,‘)分割的啦,嘿嘿,这个下次在做程序啦需要注意考虑一定要全面的啦,嘿嘿,不能再这样只是感觉把程序做出来没有错就可以啦。
六.构造函数在实际中的使用
Update u = new Update(id,username,pwd,address,phone,sex,age); u.Show(); this.Hide();
int id = 0; public Update(int id,string username,string pwd,string address,string phone ,bool sex,int age) { InitializeComponent(); this.txtUserName.Text = username; this.txtpwd.Text = pwd; this.txtaddress.Text = address; this.txtphone.Text = phone; sex = this.radioButton1.Checked ? true : false; string birthday = this.dateTimePicker1.Text; //age = DateTime.Now.Year - DateTime.Parse(birthday).Year; //string birthday = this.dateTimePicker1.Text; this.id = id; }
嘿嘿,其实一直在控制台上面写构造函数的传参,而在页面间的传值能够想起来使用这个感觉还好啦,那时间学构造函数知道是传参使用的,现在突然使用到啦,感觉学的基础知识也用到啦,似乎很是高兴的啦,感觉基础其实也是很重要的啦,在这里只要是加深下印象的啦,下次窗体间的传参我会使用起来更加方便啦,很容易想到的吧。
七.在ListBox中显示每一项的信息
DataTable dt=bll.GetAllUserInfo(); foreach (DataRow item in dt.Rows) { string format = string.Format("{0},{1},{2},{3},{4},{5},{6}",item[0],item[1],item[2],item[3],item[4],item[5],item[6]); this.listBox1.Items.Add(format); }
在这里突然想起来就是这里还出错啦那,那时间刚开始写SqlHelp这个类,对返回一个DataTable的类型的值还不是很熟悉,习惯了返回值类型是bool,string,in等,甚至一般都是void的,所以刚开始真的不知道我们可以直接在DAL层返回一个DataTable类型的值,BLL依然如此,所以在UI页面上面加载页面啦也没有显示信息啦,那时间就是知道不对,但是在返回值类型上面局限性太强,所以错啦也不知道怎样解决的啦,现在经过练习好啦很多,发现也不在局限于那几种类型啦,甚至有时间返回的是一个集合等,当然,返回类型不对,所以在遍历出来的关键字in不知道该怎样写的啦,总是为空的啦,然后现在知道类型啦,使用起来韩式蛮好的,嘿嘿。
这是做的一个小小的增删改查的小程序的啦,上面的有的是出现的问题的啦,有的是感觉总结一下需要加深下印象,下次再遇到同样的问题啦可以直接解决的啦,嘿嘿,好啦,今天就总结到这里啦,感觉今天的总结收获是蛮大的啦,嘿嘿。
今天小小的总结一下最近的问题