文档介绍:李德奇主编第二十四讲窗体间的数据传递实例Windows程序设计案例教程(C#)大连理工大学出版社1教学目标掌握添加窗体属性的方法掌握重载窗体构造函数的方法掌握将一个窗体的当前实例传送到另一个窗体中的设计方法掌握通过窗体实例访问窗体属性的方法完成窗体间的数据传递实例的程序编写2教学内容一、主窗体设计二、登录窗体设计三、为主窗体添加属性四、将当前窗体的实例传送到另一个窗体中3窗体间的数据传递实例这里通过一个实例来说明如何实现窗体间的数据传递。实例的运行次序是这样的:项目首先启动一个主窗体,主窗体的主菜单中有4个菜单项,其中【登录】和【退出】两个菜单项是可用的,另外两个菜单项【数据浏览】和【数据维护】不可用。用户单击主窗体的菜单项【登录】来启动登录窗体,登录成功后,主窗体从登录窗体获取登录者的姓名和权限代号,根据这个权限代号来决定开放哪些菜单项给他使用,并在主窗体中显示登录者的姓名。若某用户登录后被允许使用“数据浏览”功能,就可以单击【数据浏览】菜单项打开数据浏览窗体,此时在数据浏览窗体中能够显示登录者的姓名。根据这个功能要求,登录者资料的传递路线为:登录窗体→主窗体→数据浏览窗体。4一、主窗体设计(1/3)1、主窗体的功能与用户界面主窗体是本项目的启动窗体,当主窗体启动后,用户通过【登录】菜单项来启动登录窗体。用户成功登录后,用户的资料被传送到主窗体中,主窗体根据用户的权限代号来决定分配哪些功能菜单项给他使用。主窗体的用户界面如下图。5一、主窗体设计(2/3)2、主窗体的程序代码(1/2)⑴、为主窗体增加数据字段privatestringuserName;⑵、窗体加载窗体加载时,使菜单项“数据浏览”和“数据维护”不可用。privatevoidForm1_Load(objectsender,){ //使菜单项“数据浏览”和“数据维护”不可用 =false; =false;}6一、主窗体设计(3/3)2、主窗体的程序代码(2/2)⑶、【登录】菜单项单击单击【登录】菜单项时,创建登录窗体的实例并显示它。若登录成功,依据登录用户的权限代号,确定他有权使用哪个菜单的功能。,是登录窗体特别为了向调用窗体(即主窗体)传送登录者的姓名和权限代号而添加的,稍后会看到这个设计方法。privatevoidmenuItemLogin_Click(objectsender,){ //创建登录窗体实例并显示 FormLoginfml=newFormLogin(); DialogResultdr=(); //若登录成功 if(dr==) { //获取并显示登录者的姓名 userName=; ="欢迎"+()+"登陆到本系统"; //根据用户的权限代号确定菜单项的可用性 switch(()) { case"1": =true; =true; break; case"2": =true; =false; break; } }}7二、登录窗体设计(1/3)1、为登录窗体添加属性⑴、为登录窗体类增加数据字段privatestringname; privatestringjurisdiction;这两个私有字段一个保存登录者的姓名,一个保存登录者的权限代号。其作用是将这两个数据传送到接下来定义的两个属性中去。⑵、为登录窗体类添加属性为登录窗体添加两个string类型的公有属性UserName和UserJurisdiction,一个用于获取登录者的姓名,另一个获取登录者的权限代号。因为在使用这两个属性时只需读取,所以在程序代码中只需要编写get语句块。publicstringUserName { get { returnname; } } publicstringUserJurisdiction { get { returnjurisdiction; } }8二、登录窗体设计(2/3)2、为登录窗体数据字段赋值登录时当验证了用户的合法性后,需要将他的姓名和权限代号赋值给两个字段变量name和jurisdiction,以便将来在两个属性Use