机房重构的登录已经完美实现,现在我就来总结一下,我在实现的过程中遇到的问题和总结出来的经验。
第一次机房收费系统,没有想那么多或者说根本想不到那么多,但是这不是第一次,这是第二次,不管从技术上,还是从思想上,都得有点进步才行,技术上就不说了,说说思想,第一次机房的时候就听说有人用循环遍历处理TextBox,当时没在意,现在我感觉,如果不用,这个机房重构我根本做不下去,看到那么多重复的代码头疼。话不多说,先看一个判断所有TextBox和ComboBox是否为空的。
#region//判断是否为空 foreach (Control ctrl in this.Controls) // 所有的TextBox 或者 ComboBox为空 { if (ctrl is TextBox || ctrl is ComboBox) { if (ctrl.Text == "") { MessageBox.Show("请输入完整信息。"); ctrl.Focus(); return; } } } #endregion再来个清空所有TextBox中内容的。
#region//清空text foreach (Control ctrl in this.Controls) { if(ctrl is TextBox){ ctrl.Text = ""; } } #endregion根本停不下来,再来一个判断TextBox中内容是否为数字的。
public bool isnumeric(string str) { ASCIIEncoding ascii = new ASCIIEncoding();//new ASCIIEncoding 的实例 byte[] bytestr = ascii.GetBytes(str); //把string类型的参数保存到数组里 foreach (byte c in bytestr) //遍历这个数组里的内容 { if (c < 48 || c > 57) //判断是否为数字 {return false; } } return true; }好了,关于TextBox先说到这里。
优化我是和代码同步进行的,总觉得在运行的时候看着怪怪的窗体太难看,心里别扭,再有就是如果等完成了再去优化工作量会太大,所以,我在完成这么几个功能的情况下,优化没有落下。
首先,看一下窗体的优化,在各个窗体中,有时候你不想让这个窗体有最大化的功能,而且用户也不能自行去改变窗体的大小,你就要设置这两项:
1、MaximizeBox的属性设置为false;
2、AutoSize的属性设置为GrowAndShrink。
好了,是不是发现用户再也不能改变窗体的大小了。
一个好的界面能让用户心情舒畅,本着界面友好的思想,我们就需要在frmMain中添加图片,根据王啸的建议,我们现在frmMain窗体上添加Panel容器,然后在这个容器上面添加一个PictureBox,然后添加自己认为美丽的图片,别忘了把图片置底,第一步就完成了。
完成第一步后,我们兴高采烈的打开窗体欣赏一下自己的系统,打开一个子窗体,却发现所有控件浮动在子窗体之上,这是为什么呢?其实我们在VB第一版机房的时候就有这个问题,当时我们是引用了一个API函数解决的,这次同样适用。
1、首先,引用命名空间:
using System.Runtime.InteropServices;
2、然后,引用该函数:
[DllImport("user32")]
public static extern int SetParent(int hWndChild, int hWndNewParent);
3、在我们需要将子窗体显示出来的时候:
子窗体 ad = new 子窗体();
ad.MdiParent = this;
ad.Show();
SetParent((int)ad.Handle, (int)this.Handle);
注意,这个要在MID主窗体的触发事件中编写哦。
完成了上面两步之后,会发现界面几乎完美了,唯一的缺点就是,我有背景图片,但是label控件那难看的颜色却浮在图片表面,让人很是捉急,有的同学会把label控件的BackColor属性设置为Transparent,以为这样就能实现透明,这样是不能的,由于控件属于窗体不属于picturebox,所以就算透明了,它的颜色也是主窗体的颜色,这怎么办呢?
1、就像上一步,将label控件的BackColor属性设置为Transparent。
2、给label控件换个“爹”
#region//改变控件属于图片
this.pictureBox.Controls.Add(this.label1);
#endregion
注意:这里,我尝试了很多方法,始终没能将这个语句改变成循环遍历语句,只能有多少个label写多少次这个语句了,如果有小伙伴能写出这个语句的遍历的话,欢迎给我留言哦。
及时的总结往往能让我们学到更多的东西,不要等好多东西都忘记了,才想起去总结,这是我这么长时间总结出来的惟一一个我觉得特别对的道理。
下图附上一张我的机房登录后的图。