辜渝傧

13037102709

027-87870986

教学实训

您当前的位置:首页 > 教学资源 > 实训方案 >

C#应用实训|任务3 主窗体功能实现

发布者:唯众    布时间:2020-12-13 16:46:00    点击量:

任务描述

         显示会员注册主窗体,用户可以在主窗体主菜单中选择“会员注册”菜单,则系统打开会员注册窗体供用户注册,实现注册功能;若选择“会员登录”菜单,则系统打开会员登录窗体供用户登录,实现登录功能;如果选择“退出”菜单,关闭会员注册主窗体,退出整个系统运行。

知识引入

  1. 菜单
        在Windows应用程序中,菜单是重要界面元素,它将应用程序的命令按分组以选择列表的方式呈现出来,从而增加了程序的可用性。
图4-18 记事本主菜单
       在窗体中,分为主菜单(MenuStrip)和上下文菜单(ContextMenuStrip)两种。如图4-18所示为主菜单,如图4-19所示为在记事本文本编辑区右键单击弹出的上下文菜单。
图4-19 上下文菜单
(1)创建菜单栏、菜单项
       在VS2010中可以使用其提供的菜单设计器向菜单中添加菜单项和设置菜单的属性。
从工具栏中选择MenuStrip菜单控件,拖放到当前设计的窗体中,菜单控件会显示在窗体设计器下方,同时在窗体的顶部会出现一个带下拉按钮的提示框,在提示框内可以输入菜单项目。如图4-20所示:
图4-20 模拟记事本菜单项
        其中,右箭头表示可以在该菜单项上添加子菜单,所以每一个期间项都可以添加多个子菜单项,子菜单项本身也可以进行添加子菜单。
编码标准:在菜单项控件名前加mnu前缀。
菜单项常用的属性和事件如表4-9所示。
表4-9 菜单项常用的属性和事件
属性 说明
Text 菜单项要显示的文本
Name 设置菜单项的ID
ShortcutKeys 设置菜单项激活的快捷键
Enabled 菜单项是否响应外部事件
Visible 菜单项是否可见
Show ShortcutKeys 是否显示菜单项的快捷键
事件 说明
Click 菜单项单击时会响应的事件
 
        菜单项添加完后,就可以为菜单项添加快捷键,只需在菜单项Text属性中添加“&”即可,例如,给图4-20中“保存”主菜单添加快捷键,将“保存”Text属性值设置为“保存(&S)”,形成的快捷键为“Alt + S”组合值。
还可以为菜单项设置快捷键,可以在代码中通过设置属性设置,也可以在设计视图模式下通过设置其ShortcutKeys属性设置。如图4-21所示:

图4-21 菜单项设置快捷键
        要在两个菜单项之间添加分隔条,则在这两个菜单项间添加一新菜单项,然后将其Text属性设计为“-”(半角),该菜单项就会以分隔条的形式显示在菜单上,如上图4-21所示,在“保存”和“退出”间添加了分隔条。
(2)响应菜单事件
       每个菜单项都是一个独立的控件,都可以响应一个独立的事件过程。一般都响应单击(click)事件。
4-4
双击上图4-21“退出”菜单项为其添加响应菜单事件,代码如下:
private void 退出ToolStripMenuItem_Click(object sender, EventArgs e)
{
    DialogResult dr = MessageBox.Show("你真的要退出当前应用程序吗?","退出提示",MessageBoxButtons.YesNo,MessageBoxIcon.Question);
    if(dr == System.Windows.Forms.DialogResult.Yes)
    {
        Application.Exit();
    }
}
运行应用程序,当单击“退出”菜单项时,运行效果如图4-22所示:
图4-22  单击“退出”菜单项时运行效果
(3)上下文菜单
        上下文菜单(ContextMenuStrip)也称右键菜单。上下文菜单不会在窗体的顶部显示,是在需要的时候响应窗体的右键单击事件,在鼠标右键单击时的位置弹出。
在窗体设计模式下添加ContextMenuStrip控件,如图4-23所示:
图4-23  添加ContextMenuStrip菜单
4-5
       运行应用程序,在模拟记事本中鼠标右键单击,弹出上下文菜单,代码如下:
private void textBox1_MouseClick(object sender, MouseEventArgs e)
{
    //判断是否是鼠标右键单击
    if (e.Button == MouseButtons.Right)
    {
        cmnuEdit.Show(this, e.X, e.Y);
    }    }
运行应用程序,当在模拟记事本中鼠标右键单击,运行效果如图4-24所示:

  1. 多文档(MDI)窗体
       多文档窗体(MDI)提的是可以在一个界面中同时对多个文档进行操作。如Microsoft Excel2007就是一个典型的多文档窗体,可以同时打开多个工作簿进行操作,对其中的一个工作簿进行操作时,不会影响也不需要关闭其他工作簿。
       在应用程序中,往往需要设计多文档窗体,这样在一个主窗体中可以同时运行多个子窗体。
(1)设计MDI窗体
       多文档应用程序(MDI)运行时能够同时打开多个子文档,这样多文档应用程序需要有一个窗体作为容器来存放多个“子窗体”,这个容器窗体称为主窗体,如启动Excel主界面。设置主窗体只需要将普通窗体的IsMDIContainer属性设置为true就变成主窗体了。
创建好的主窗体如图4-25所示:
图4-25  多文档主窗体
       现在可以向创建好的主窗体添加子窗体,可以多文档的子窗体看成是显示在主窗体容器中的普通窗体。在项目中添加一个普通窗体,在上图图4-25主窗体“文件”-à“新建”菜单被单击时响应如下代码:
4-6
主窗体“新建”菜单被单击时响应事件,代码如下:
private void mnsNew_Click(object sender, EventArgs e)
{
    FrmDocument fd = new FrmDocument();
    fd.MdiParent = this;
    fd.Show();
}
运行应用程序,主窗体中单击“新建”菜单若干次,运行效果如图4-26所示:
图4-26  多文档窗体
        子窗体显示时,只能在父窗体区域内移动、改变窗口大小等操作。如果子窗体包含有菜单,默认情况下子窗体不显示菜单,该菜单将会合并到主窗体中显示。也可以通过修改子窗体菜单的ArrowMerge属性为false禁止默认合并到主窗体中。
MDI主窗体常用的属性、方法和事件如表4-10所示。
表4-10  MDI主窗体常用的属性、方法和事件
属性 说明
MdiChildren 获取当前主窗体下所有的子窗体对象
MdiParent 获取或设置MDI子窗体的父窗体
ActiveMdiChild 获取当前活动(正在操作)的MDI子窗体
方法 说明
ActiveMdiChild 激活某一子窗体
LayoutMdi 在MDI父窗体中排列多个子窗体
事件 说明
Close 关闭窗体时触发的事件
Closing 正在关闭窗体时触发的事件
MdiChildActivate 激活或关闭MDI子窗体时,将会触发的事件
 

任务实现

        会员管理系统主窗体实现,选择“会员注册”菜单时在主窗体中打开会员注册窗体,供用户注册;选择“会员登录”菜单时在主窗体中打开会员登录窗体,供用户登录;选择“退出”菜单时退出整个应用程序运行。
4-7
1.  设计主窗体,如图4-27所示:
图4-27  会员管理主窗体
(1)主窗体“会员注册”菜单被单击时响应事件,代码如下:
private void 会员注册ToolStripMenuItem_Click(object sender, EventArgs e)
{
    FrmRegister fr = new FrmRegister();
    fr.MdiParent = this;
    fr.Show();
}
运行应用程序,当单击“会员注册”菜单项时,运行效果如图4-28所示:
图4-28  会员注册
(2)主窗体“会员登录”菜单被单击时响应事件,代码如下:
private void 会员登录ToolStripMenuItem_Click(object sender, EventArgs e)
{
    FrmLogin fl = new FrmLogin();
    fl.MdiParent = this;
    fl.Show();
}
运行应用程序,当单击“会员登录”菜单项时,运行效果如图4-29所示:
图4-29  会员登录
(3)主窗体“退出”菜单被单击时响应事件,代码如下:
private void 退出ToolStripMenuItem_Click(object sender, EventArgs e)
{
    DialogResult dr = MessageBox.Show("你真的要退出当前应用程序吗?", "退出提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
    if (dr == System.Windows.Forms.DialogResult.Yes)
    {
        Application.Exit();
    }
}

任务小结

  1. 主菜单和上下文菜单的应用程序中的使用。
  2. 多文档窗体的设计和使用。


上一篇:C#应用实训|任务2 注册窗体实现

下一篇:C#应用实训|项目四 知识拓展