- 任务目标
根据智慧社区商超管理系统需求分析中系统主界面的原型设计,利用Visual Studio开发工具,完成系统主界面的制作。
(1)系统主界面的制作
1.结果展示
2.MDI界面程序制作
完成MDI界面制作,具备多个菜单选项,其中,点击“文件-打开”选项可以弹出子界面。
3.MDI窗体的特点
通常将一个MDI容器窗体作为父窗体,父窗体可以将多个子窗体包容在它的工作区之中。MDI父窗体与其子窗体之间表现出如下的特性:
MDI的容器窗体(父窗体)必须且只能有一个,其客户区用于显示子窗体。
不要在容器窗体的客户区加入控件,否则那些控件会显示在子窗体中。
容器窗体的框架区可以有菜单、工具栏和状态栏等控件。
子窗体可以有多个,各个子窗体不必相同。
子窗体被显示在容器窗体的客户区之中。
子窗体被最小化后,其图标在容器窗体的内部,而不是在任务栏中。
子窗体可以单独关闭,但若关闭容器窗体,子窗体随容器窗体一起被关闭。
4.MDI窗体的设计过程
a.MDI容器窗体
只要将窗体的IsMdiContainer属性设置为True,它就是容器窗体。一种是在窗体的Load()事件中设置,一种是在属性中设置:
this.IsMdiContainer=True;
容器窗体在显示后,其客户区是凹下的,等待子窗体显示在下凹区。不要在容器窗体的客户区设计任何控件。
b.MDI子窗体
MDI子窗体就是一般的窗体,其上可以设计任何控件,此前设计过的任何窗体都可以作为MDI子窗体。只要将某个窗体实例的MdiParent属性设置到一个MDI父窗体,它就是那个父窗体的子窗体,语法为:
窗体实例名.MdiParent=父窗体对象;
例如,下一段代码编写在一个MDI父窗体的某个事件处理程序中,创建一个子窗体实例formChild1并将其显示在MDI父窗体的客户区中:
FormChild formChild1 = new FormChild();
formChild1.MdiParent = this;
formChild1.Show();
5.菜单栏
.NET提供了一个 MenuStrip 控件,使用户能够方便地创建菜单。
菜单中可以添加:
菜单项(MenuItem)
组合框(ComboBox)
文本框(TextBox)
6.工具栏和状态栏
工具栏
状态栏
工具栏及状态栏上的按钮和标签的主要属性和事件
状态栏特有属性:
(2)系统主界面的制作
1.结果展示
2.不同角色进入不同主界面
在登录界面输入收银员的账户密码,则进入收银员主界面;输入库管员的账户密码,则进入库管员主界面。注意观察两个主界面的区别。
3.关键代码
public LoginForm()
{
InitializeComponent();
}
// 窗口加载时,设置默认角色为“收银员”
private void LoginForm_Load(object sender, EventArgs e)
{
this.cbb_Type.SelectedIndex = 0;
}
// 点击“登录”按钮则登录系统
private void bt_Login_Click(object sender, EventArgs e)
{
if (this.cbb_Type.SelectedItem.ToString() == "收银员")
{
if (this.tb_User.Text == "123456" && this.tb_Password.Text == "123456")
{
MessageBox.Show("收银员登录成功");
// 显示收银员主界面
MainFormUser formUser = new MainFormUser();
formUser.userName = this.tb_User.Text.ToString();
formUser.Show();
// 隐藏登录界面
this.Hide();
}
else
{
MessageBox.Show("用户名或密码错误", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
if (this.cbb_Type.SelectedItem.ToString() == "库管员")
{
if (this.tb_User.Text == "admin" && this.tb_Password.Text == "admin")
{
MessageBox.Show("库管员登录成功");
// 显示库管员主界面
MainFormAdmin formAdmin = new MainFormAdmin();
formAdmin.userName = this.tb_User.Text.ToString();
formAdmin.Show();
// 隐藏登录界面
this.Hide();
}
else
{
MessageBox.Show("用户名或密码错误", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
4.C#中获取当前日期和时间
5.Timer控件
Timer控件,计时器,用于需要按一定时间间隔周期性执行某事件的场合,
是一个非可视化的控件。
常用属性和事件: