2018-05-25

                              收银员/库管员系统主界面的制作

1:在Microsoft Excel中,可以同时打开多个Excel文档,而不需要新打开一个Excel窗口,这种应用程序叫做MDI(多文档界面)应用程序。


2018-05-25_第1张图片
图片1.png

2:在项目中使用MDI窗体时,通常将一个MDI容器窗体作为父窗体,父窗体可以将多个子窗体包容在它的工作区之中。MDI父窗体与其子窗体之间表现出如下的特性:

MDI的容器窗体(父窗体)必须且只能有一个,它只能当容器使用,其客户区用于显示子窗体,客户区不能接受键盘和鼠标事件。
不要在容器窗体的客户区加入控件,否则那些控件会显示在子窗体中。
容器窗体的框架区可以有菜单、工具栏和状态栏等控件。
子窗体可以有多个,各个子窗体不必相同。
子窗体被显示在容器窗体的客户区之中,子窗体不可能被移出容器窗体的客户区之外。
子窗体被最小化后,其图标在容器窗体的内部,而不是在任务栏中。
子窗体可以单独关闭,但若关闭容器窗体,子窗体随同容器窗体一起被关闭。

(1/2)、MDI容器窗体
只要将窗体的IsMdiContainer属性设置为True,它就是容器窗体。一种是在窗体的Load()事件中设置,一种是在属性中设置:

    this.IsMdiContainer=True;

   容器窗体在显示后,其客户区是凹下的,等待子窗体显示在下凹区。不要在容器窗体的客户区设计任何控件。
2018-05-25_第2张图片
图片2.jpg

(2/2)、MDI子窗体

   MDI子窗体就是一般的窗体,其上可以设计任何控件,此前设计过的任何窗体都可以作为MDI子窗体。只要将某个窗体实例的MdiParent属性设置到一个MDI父窗体,它就是那个父窗体的子窗体,语法为:

窗体实例名.MdiParent=父窗体对象;

   例如,下一段代码编写在一个MDI父窗体的某个事件处理程序中,创建一个子窗体实例formChild1并将其显示在MDI父窗体的客户区中:

FormChild formChild1 = new FormChild();
formChild1.MdiParent = this;
formChild1.Show();
  1. 菜单栏的制作

NET提供了一个 menuStrip 控件,使用户能够方便地创建菜单。

菜单栏(menuStrip)控件:

利用菜单条控件可以轻松地创建Office那样的菜单,在菜单条中可以添加菜单项(MenuItem)、组合框(ComboBox)和文本框(TextBox)
2018-05-25_第3张图片
image.png
image.png
2018-05-25_第4张图片
图片3.gif
  1. 工具栏和状态栏
2018-05-25_第5张图片
image.png

工具栏及状态栏上的按钮和标签的主要属性和事件

2018-05-25_第6张图片
image.png

C#中获取当前日期和时间的方法:

// 获取日期+时间�DateTime.Now.ToString(); // 默认格式的日期和时间
DateTime.Now.ToString(“yyyy-MM-dd HH:mm:ss”); // 指定格式:2018-04-09 21:02:10�// 获取日期�DateTime.Now.ToShortDateString(); // 默认日期格式�DateTime.Now.ToString(“yyyy-MM-dd”); //指定日期格式:2018-04-09�// 获取时间�DateTime.Now.ToLongTimeString(); // 默认时间格式�DateTime.Now.ToString(“hh:mm:ss”); // 指定时间格式:09:02:10

3.Timer控件的属性和事件

Timer控件,计时器,用于需要按一定时间间隔周期性执行某事件的场合,
是一个非可视化的控件。
常用属性和事件:

2018-05-25_第7张图片
image.png

在主界面右下角显示当前的日期和时间:


2018-05-25_第8张图片
图片4.png

扩展练习(1):使用Timer控件实现计时器界面


2018-05-25_第9张图片
![![图片6.png](https://upload-images.jianshu.io/upload_images/11739501-1f08c6eaad3b7c18.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) ](https://upload-images.jianshu.io/upload_images/11739501-2852257f5d0c7934.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

扩展练习(2):使用Timer控件实现计时器界面

2018-05-25_第10张图片
image.png
2018-05-25_第11张图片
image.png

扩展练习(3):使用Timer控件实现开门动画效果


2018-05-25_第12张图片
image.png
2018-05-25_第13张图片
image.png

THE ENDING.....
两个已有项目进行合并
任务:项目A和项目B,将B的窗口合并到A项目中去
方法一:

以项目A为基础,将项目B的内容在项目A重新实现一遍

任务:项目A和项目B,将B的窗口合并到A项目中去

方法二(提前做好项目A和B的备份,防止合并出错):
第1步:将项目B的窗口源文件(每个窗口三个文件)拷贝到项目A的代码目录中

2018-05-25_第14张图片
图片7.png

第2步:在项目A中引入拷贝过来的新窗口(选择MainForm.cs即可导入MainForm窗口)

2018-05-25_第15张图片
图片8.png

第3步:整个解决方案替换成项目A的namespace

2018-05-25_第16张图片
图片9.png
  1. 两个窗口传值

任务描述:在LoginForm中点击登录按钮,进入MainForm,同时隐藏LoginForm。登录用户名传递到MainForm中显示。

实现:在LoginForm的登录方法中,添加如下代码:

2018-05-25_第17张图片
image.png
  1. 根据角色进入不同的主窗口
2018-05-25_第18张图片
image.png

界面参考设计:

收银员


2018-05-25_第19张图片
图片10.png

库管员


2018-05-25_第20张图片
图片11.png

你可能感兴趣的:(2018-05-25)