1.关于对齐:水平间距平分是以水平方向最左和最右的控件位置作为参考的,就是说如果你选择水平间距相等,那最左最右的两个控件位置不变,其它的控件以这两个作为参考。垂直间距相等的概念一样!
2.ANCHOR可以使控件离窗体边缘的距离保持不变,DOCK是指往某一个方向填充
3.MDI:多文档界面(multipl document interface)。是指一个主应用程序窗口里面可以打开多个文件。实现的具体方法如下:
1.将父窗体的IsMDIContainer属性设置为Ture,这是在主窗体的属性里面来设置的!
2.为主窗体相应控件书写代码:
被调用的窗体类 窗体对像名(自己命名)=new被调用的窗体类();
窗体对像名(自己命名).MDIParent=this; //新添加的代码
窗体对像名.Show();
3.为父窗体添加子窗体列表:
1)添加一个菜单项(窗口)。这个菜单项的作用是以后将打开的子窗体的名字显示在里面的。像我们打开的WORD软件一样,在窗口菜单里面显示当前打开的文件名就是这个作用。我们添加这个菜单项的作用是使以后打开的子窗体的名字有地方放,我们需要告诉系统我们想把它放在那一个菜单里面,如果没有指定位置那系统不不知道放在那里显示也就不会显示出来的!
2)为我们刚刚添加的菜单项(窗口)命名,这个名字很重要,因为我们以后要指定位置就是指定这个名称,当然系统也会自动给我们一个名称,但是给自己添加的控件命名是一个好习惯!
3.)选择整个菜单,找到菜单的属性MdiWindowsListItem(MDI窗体列表项);这个属性是要我们指定我们想把我们打开的窗体列表(就是我们打开的子窗体)项放在那里,这里我们当然就是指定我们刚刚创建的那个菜单项(窗口)了!这样就能实现将我们打开的每一个子窗体的名字显示在这个新添加的菜单里面了!
4.关于WinForms高级控件:ToolStip(工具栏):它包含了Button(按钮),Lable(标签),DropDownButton(下拉按钮),TextBox(文本框),ComboBox(组合框) 等。其中我们这一章需要使用的是Button(按钮)和DropDownButton(下拉按钮),它们的区别表面上是DropDownButton(下拉按钮)会有一个剪头可以来显示下一级的菜单,而Button(按钮)没有。在默认情况下,这两个工具条都只显示一个图像,如果需要同时显示图像和文字那就需要修改它们的DisplayStyle属性为TextAndImage。
5.关于WinForms高级控件:StatusStrip(工具栏),它也包含了四个子类型,StatusLabel(状态栏标签),ProgressBar(进度条),DropDownButton(下拉按钮);SplitBotton(有分隔符的按钮);其中我们这一章所需要学习的是StatusLabel(状态栏标签),,它的作用是显示状态栏中的文字,我们后面将传递的值显示的状态栏里面就是要建立一个这样的状态条, StatusLabel(状态栏标签),,这样才有位置来接收这个值。
6.关于“MySchool的关于窗口”的说明。这个程序的总体想法是这样的。通过一个pictureBox来显示我们所需要显示的图像,但是pictureBox(图片框)只能显示一张图像,为了使效果更好我们想显示多幅图像,所以使用了一个ImageList(图像列表)来储存多幅图像,然后引入一个Time时钟控件来实现每隔多少时间自动调用方法实现pictureBox(图片框)图像的动态显示(显示ImageList中的不同图像)。代码如下:
Int Index=0 //将其定义为全局变量的原因是后面的每一次方法调用都需要保存前一次的index的值,不然如果定义在方法里面的话那每一次调用都会将index的值重置,造成始终显示某一张图片,达不到动态显示的效果!
private void timer_Tick(object sender, EventArgs e) //这是时钟的事件
{
// 如果当前显示的图片索引没有到最大值就继续增加
if (index < ilAnimation.Images.Count - 1) //图像索引是从0开始的,所以后面要减1, ilAnimation是ImageList(图像列表)的名字
{
index++;
}
else // 否则从第一个图片开始显示,索引从0开始,实现循环显示
{
index = 0;
}
// 设置图片框显示的图片
picAnimation.Image = ilAnimation.Images[index]; // picAnimation是pictureBox(图片框)的名字,ilAnimation是imageList(图像列表)的名称,这句的作用是在pictureBox(图片框)里面显示ilAnimation的不同图像,通过索引号来确定显示那一张,这和以前的数组很类似。
}
7.关于显示模式窗体:模式窗体是指窗体以对话框的形式打开,如果不关闭这个窗体那就不能做其它的操作,只有关闭这个窗体才能进行其它的操作。方法是:
被调用的窗体类 窗体对像名(自己命名)=new被调用的窗体类();
窗体对像名.ShowDialog(); //模式化打开窗体
8.关于用户输入验证:就是判断用户有没有输入内容,如果内容为空的话那就是没有输入,代码如下:
If(控件.text==””){
MessageBox.show(“提示”);
}
配合if(){}else{}就能完成了!
9.关于窗体间的数据传递:
1)这个是需要将窗体登陆时输入的用户名传递到其它的窗体的状态栏上。它的实现原理是这样的!定义一个单独的公共类UserHelper类,在里面建立两个变量一个是用户名(loginName),一个是类型(loginType)。这样同一个类的其它窗体就能使用这两个变量。这里要注意是要将这两个变量的类型设置为Static,这样在C#里面就能在其它的类里面通过这个类的“类名.变量名”来使用这个变量了!这就相当于定义了一个公共的变量,这个变量在这个类可以使用,在另外一个类也可以使用,通过这个公共的变量来传递值。这就为我们的值的传递打下了一个基础。
2)首先在登陆窗体的提交按钮里面书写代码:
// 将选择的登录类型保存到静态变量中
UserHelper.loginId = txtLogInId.Text;// UserHelper.loginId是我们定义接收值的变量,txtLogInId是登陆窗体里面输入用户名的控件名称
UserHelper.loginType = cboLogInType.Text; // UserHelper.loginType是我们定义接收值的变量,cboLogInType是登陆窗体里面输入用户名的控件名称
3)之后在登陆窗体里面输入用户名和类型,写入一个条件,如果用户名和类型不为空就登陆,登陆后显示想要打开的窗体,代码如下:
被调用的窗体类 窗体对像名(自己命名)=new被调用的窗体类();
窗体对像名.Show(); //打开需要打开的窗体
如{
AdminForm adminForm = new AdminForm(); //AdminForm是要打开的窗体
adminForm.Show();
}
4)在需要登陆的窗体里面写一个Load事件(窗体一打开一加载就运行),在这个加载方法里面书写如下代码:
this.slblAdmin.Text = this.slblAdmin.Text + "-" + UserHelper.loginId;//this代码这个窗体,slblAdmin是这个窗体状态栏的名称,Text是指状态栏的文本,this.slblAdmin.Text就是指这个窗体的状态栏所显示的文本,=号后面就是我们用那两个静态变量接收到的值,那么这句话的意思就是说将我们刚刚保存的变量值放在状态栏里面来显示!
10. 上机阶段是我们书本上实例的翻版,如果有问题请向我留言!希望这个对你们能有用!