WinForm中关于返回按钮的事件代码?

tianliang1 2009-11-03 11:06:46
我有三个Form,一个主Form1,两个子Form2,Form3
我自己定义了一个控件,这个控件中我添加了一个返回按钮,我把这个控件都拖放在这三个Form中
我想实现的功能是,我点击这个自定义控件中的返回按钮就返回上一级Form,并且关闭当前Form
类似我们经常用的返回按钮,返回到主Form后,不在返回子Form
我应该怎么为这个返回按钮添加代码?
希望高手帮忙,谢谢!!!


...全文
500 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
tianliang1 2009-11-04
  • 打赏
  • 举报
回复
到此时,我该结贴了,虽然我改了方法了,但还是感谢大家的帮忙!
个人意见Winform中显示父窗体不是用this .Parent;一般都是用this.Owner,上面的所有替换为这个方可运行!
tianliang1 2009-11-03
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 yuwenge 的回复:]
引用 8 楼 tianliang1 的回复:
谢谢你的回答!不过,你是没有理解到我的意思
我是要在我一个自定义控件的按钮上写代码,而且每一个界面上都有这个自定义的控件,我点击这个自定义控件上的返回按钮就返回上一级窗体!

你的想法还停留在做web上,不了解winform程序运行的实质,所以问出来大家都不知道怎么答。
你的要求不是一个简单的用户控件就能做到的。可以说,跟这个控件一点关系都没有。
大致的流程是,你在每个form之间跳转的时候,不能关闭它们,而只是hide()掉。返回的时候,hide当前form然后show()出之前的form。
[/Quote]
你说的意思我明白,如果我只是只有一个返回按钮的话,我就不用花很多功夫去写一个自定义控件了
问题是,我有很多公用的控件,我把他们都放在一个自定义控件里了,在把这个自定义控件拖到很多个窗体里
而我的问题是,不能为这个自定义控件中的返回按钮控件写代码!!!
qs99521 2009-11-03
  • 打赏
  • 举报
回复
自定义控件 可参考事件委托来执行 自定义控件内部事件
tianliang1 2009-11-03
  • 打赏
  • 举报
回复
意思是任何时候,这个返回的事件代码都可用
而且自定义的控件不能分别在不同的窗体中对同一个按钮编辑事件代码。他里面的代码,只有你写好后,以后每一个界面中的这个自定义控件的代码都是一样的!!!
卧_槽 2009-11-03
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 tianliang1 的回复:]
谢谢你的回答!不过,你是没有理解到我的意思
我是要在我一个自定义控件的按钮上写代码,而且每一个界面上都有这个自定义的控件,我点击这个自定义控件上的返回按钮就返回上一级窗体!
[/Quote]
你的想法还停留在做web上,不了解winform程序运行的实质,所以问出来大家都不知道怎么答。
你的要求不是一个简单的用户控件就能做到的。可以说,跟这个控件一点关系都没有。
大致的流程是,你在每个form之间跳转的时候,不能关闭它们,而只是hide()掉。返回的时候,hide当前form然后show()出之前的form。
tianliang1 2009-11-03
  • 打赏
  • 举报
回复
谢谢你的回答!不过,你是没有理解到我的意思
我是要在我一个自定义控件的按钮上写代码,而且每一个界面上都有这个自定义的控件,我点击这个自定义控件上的返回按钮就返回上一级窗体!
sinpoal 2009-11-03
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 sinpoal 的回复:]
   C# codeprivatevoid button1_Click(object sender, EventArgs e)//Form1 中的button {
(new Form2()).Show();this.Visible=false ;
}privatevoid button1_Click(object sender, EventArgs e)//Form2 中的button {
(new Form3()).Show();this.Close();
}privatevoid button1_Click(object sender, EventArgs e)//Form3 中的 button {
(new Form1()).Show();this.Close();
}

参考哈这个代码!
[/Quote]

注意在 Application.Run(new Form1()); 这句中表明Form1用this.close()会导致整个程序退出;只能用 this.Visible =false ;
sinpoal 2009-11-03
  • 打赏
  • 举报
回复


private void button1_Click(object sender, EventArgs e)//Form1 中的button
{
(new Form2()).Show();
this.Visible =false ;
}



private void button1_Click(object sender, EventArgs e)//Form2 中的button
{
(new Form3()).Show();
this.Close();
}

private void button1_Click(object sender, EventArgs e)//Form3 中的 button
{
(new Form1()).Show();
this.Close();
}


参考哈这个代码!
tianliang1 2009-11-03
  • 打赏
  • 举报
回复
哦,补充一下,我是通过点击Form中的PictureBox进入下一个窗体的
而代码又要在自定义控件里写
我该怎么办,高手帮忙,谢谢
tianliang1 2009-11-03
  • 打赏
  • 举报
回复
哦,第一句可以用,但是,第二句不行
因为我是自己先定义了一个控件,控件上有很多按钮,其中一个返回按钮,我在每一个窗体里都拖放了这个包括了很多按钮的自定义控件,我想通过点击这个自定义控件上的返回按钮,能返回上一级窗体
大哥些,明白我的意思了吗
tianliang1 2009-11-03
  • 打赏
  • 举报
回复
大哥,我是在自定义控件里写事件代码,你上面的语句都不支持
zbking 2009-11-03
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 asdfg_ 的回复:]
this.parent.show();
this.close();
[/Quote]

同意,关键你是得子FORM要在主FORM的CONTROLS里。
asdfg_ 2009-11-03
  • 打赏
  • 举报
回复
this.parent.show();
this.close();
你妹的特盗不 2009-11-03
  • 打赏
  • 举报
回复
看不懂,太菜了
tianliang1 2009-11-03
  • 打赏
  • 举报
回复
呵呵,看来我只有把这个按钮从自定义控件中独立出来做了,那样会很简单!!!
谢谢大家的帮忙!
sharpe 2009-11-03
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 tianliang1 的回复:]
引用 16 楼 sharpe 的回复:
你每个窗体里面添加个父窗口的属性:Parent,当前窗口要显示子窗口时,把子窗体的Parent=this;,

按返回按钮时,this.Parent.Show();this.Close();
主窗体不能Close,只能Visible =false;

注意:当当前处在的窗体不是主窗体时,点击关闭按钮,记得把主窗体也关闭了。如果到第三个窗体,那主窗体应该是this.Parent.Parent.Close();

我的每一个窗体都是独立的,我是从一个窗体的PictureBox进入另一个窗体
我本想用静态变量来试试,可……
用这个东西不太好
[/Quote]

是通过点击PictureBox进入另一个窗体?那就在点击事件里创建子窗体。
比较你在form1里面的PictureBox的点击事件里写,
form2 f2=new form2();
f2.Parent=this;
f2.Show();
this.Visible = false//如果form1是主窗体的话就这样,
//如果不是的话就用this.Close();


在每个窗体的返回按钮事件里面统一:


this.Parent.Show();
this.Close();


注意关闭时的主窗体关闭。如果你的窗体特别多的话,你的主窗体就难找了。想办法做个引用,能引用主窗体。

不知道你的具体需要是怎么样。重绘方面的知识你可以网上搜一下。
卧_槽 2009-11-03
  • 打赏
  • 举报
回复
算了,楼主别折腾了。你说不清,我们也听不大明白,更加说不清了。
tianliang1 2009-11-03
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 sharpe 的回复:]
你每个窗体里面添加个父窗口的属性:Parent,当前窗口要显示子窗口时,把子窗体的Parent=this;,

按返回按钮时,this.Parent.Show();this.Close();
主窗体不能Close,只能Visible =false;

注意:当当前处在的窗体不是主窗体时,点击关闭按钮,记得把主窗体也关闭了。如果到第三个窗体,那主窗体应该是this.Parent.Parent.Close();
[/Quote]
我的每一个窗体都是独立的,我是从一个窗体的PictureBox进入另一个窗体
我本想用静态变量来试试,可……
用这个东西不太好
tianliang1 2009-11-03
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 sharpe 的回复:]
要实现这样,不能用重绘吗???为什么要这样实现呢?
[/Quote]
什么重新绘啊,哎,看来我只有把那个控件从我自定义的控件中取出来,在每一个窗体中放一个返回按钮了
呵呵,谢谢你的回答
sharpe 2009-11-03
  • 打赏
  • 举报
回复
要实现这样,不能用重绘吗???为什么要这样实现呢?
加载更多回复(4)
【有详细的过程,图片演示,及代码】【历时两周完成!】 实训目的 1、理解C#WinForm程序设计的风格,能设计合理的C#项目文件夹结构和公共类,注重代码的重用性,养成良好的标识符命名和代码编写习惯; 2、熟练掌握各种常见的控件属性和事件方法; 3、积累项目开发常采用的设计模式和比较经典代码片段,并能在以后的项目开发熟练地运用。 实训内容 实训项目:《旅行社管理系统》   1、系统功能分析与系统设计      2、数据库设计   数据库名称:db_travelAgency   数据表:    (1)操作员信息表(编号,姓名,密码,类别)       (2)客户信息表(编号,姓名,性别,生日,职业,藉贯,联系方式,注册时间)  tb_customer(id,customer,sex,birthday,career,birthdayPlace,telephone,registerTime)   (3)景点信息表(编号,景点名称,地址,门票价格,简介,级别)      (4)省市信息表(编号,省市名,父结点编号,子结点个数,层次数,在兄弟结点的编号,其他)      (5)风景图片信息表(编号,图片名称,二进制数据,景点名称,图片描述)     (6)订单信息表(订单编号,客户姓名,目的地,景区名,出发日期,返回日期,住宿标准,导游员,老人数,成人数,学生数,小孩数,总需费用,预付定金,所属旅行团号)      (7)旅行团信息表(团号,景点名称,导游员,出发时间,返回时间,游客人数,入住标准)    tb_groupInfo(groupID,spotName,guider,departureDate,backDdate,touristNum,dormMoney)       (8)导游员信息表(编号,姓名,性别,出生年月,到旅行社的时间,负责区域,出场费,备注)        3、模块编码与调试     (1)登录模块     (2)景点信息管理模块     (3)景点信息查询模块     (4) 日常业务模块     (4)系统维护模块     (5)软件版权模块    4、集成测试 实训步骤: 第1天:   上午—(1)分析系统功能结构,了解业务流程及各功能模块      (2)在sqlserver2005环境创建各数据库和数据表,录入相关数据 下午-- (1)设计项目文件夹结构,收集素材,编辑App.config文件; 设计文件夹结构: 添加并制作app.config文件 (2)编写公共类(连接数据库的类,实体类)。 连接数据库的类及其公共方法: 第2天:(1)设计登录模块界面布局,并进行编码和调试; (2)设计系统主界面,并处理好登录模块与系统主界面之间的跳转关系;   系统主界面: 第3天:实现景点信息的添加、修改和删除功能。 添加景点信息: 修改景点信息: 删除景点信息: 第4天:(1)设计景点信息分类查询界面布局 (2)景点信息分类查询功能编码与调试 注意:根据查询选项的不同,在查询条件位置会显示不同的控件。 第5天:(1)设计景点图片浏览器的界面布局 点击确定按钮出现第一张图片 点击“>”(下一张) 点击“>|”(最后一张) 点击“<”(上一张) (2)景点图片浏览器功能编码与调试 第6天:(1)设计“业务预订管理”界面布局; 加载窗体时: 点击“预订”工具条按钮时: 修改订单: 1、点击[修改]工具条,在订单编号文本框输入订单号,点击查找,显示该订单信息; 2、对信息进行修改后,点击[保存]更新到数据库。 删除订单 1、点击[删除]工具条按钮,在订单编号文本框输入订单号,点击查找按钮,在界面显示该订单的信息。 2、点击[保存]工具条按钮,删除在数据库该订单信息。 (2)业务预订管理功能编码与调试。 参考项目的源代码 第7天:(1)设计旅行团基本查询界面布局; (2)旅行团查询功能编码与调试 说明:查询旅行团信息时,可以按照以下四种方式查询 a.所有已经生成的旅行团;b.按订单号查询;c.按景点查询有哪些已经设立的旅行团;d.按出发日期查询有哪些已经生成的旅行团 (3)设计生成旅行团功能界面布局 “组建旅行团”消息提示,点击确定后,生成该旅行团的明细信息,显示在datagridview,并修改订单表对应的字段(即该订单对应的groupID),并将旅行团明细信息写入到tb_groupInfo表 (4)生成旅行团功能编码与调试 第8天:(1)客户信息管理模块界面设计与布局; (2) 客户信息管理模块编码与调试    第9天:, 操作维护模块布局与设计 操作员维护模块编码与调试    第10天(1)数据备份与还原模块界面设计与布局     (2)数据备份与还原模块编码与调试 实训要求 不迟到,不早退; 实训过程,同学之间组成项目小组,分工收集材料,讨论项目或模块设计方案,以及核心技术的实现方案,但彼此的程序代码不能复制粘贴; 上交的实训报告不能雷同,若完全相同,实训成绩均判为零为。

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧