C#中如何通过一个窗体中的按钮点击事件打开另一个窗体并且关闭自身?

guangguang465355249 2009-05-08 11:30:06
C#中如何通过一个窗体中的按钮点击事件打开另一个窗体并且关闭自身?要求是关闭窗体自身,不是隐藏,怎么button的事件代码啊?哪位大侠帮帮忙,谢谢了!
...全文
11049 55 打赏 收藏 转发到动态 举报
写回复
用AI写文章
55 条回复
切换为时间正序
请发表友善的回复…
发表回复
lyj1111111111 2011-11-25
  • 打赏
  • 举报
回复
Application.Exit();
lhxl543449065 2011-11-11
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 louyunlong 的回复:]
把主窗体一开始就做成隐藏的,在后台运行,并自动呼叫一个子窗体1~

把一个子窗体1做成貌似主窗体的样子~在他上边呼叫子窗体2~

这样几个子窗体之间关关开开对主窗体都不造成影响了~~

代码不会写,这是觉得应该这样去实现~·不晓得有没有参考价值~学习了。
[/Quote]
如果单纯的做一个登陆窗体的话 确实大家都是这样做的
但是如果要实现多用户
比如超市的收银系统 mainfrm里有个换班按钮
要求实现 点击换班 关闭mainfrm 弹出登陆界面 的话就不得不用dispose或者hide 别无他法的 占不了多少资源的
bcabc123 2011-10-11
  • 打赏
  • 举报
回复
顶一下,谢谢各位,我回去试试。
bluce_blue 2011-05-31
  • 打赏
  • 举报
回复
我来看看17楼的
lbkkd 2011-05-22
  • 打赏
  • 举报
回复
我觉得不行的主要原因是后面定义的窗体应该是局部窗体,所以在关闭后它的生存期结束,这样导致了两个窗体都被关闭。所以应该声名一个全局对象。还有关闭前一个窗口的主要想法是节约内存空间,所以隐藏没有多大意思,主要是从内存中移除才是最好的想法。
VeryShooter 2011-05-11
  • 打赏
  • 举报
回复
this.Hide();
FromName form =new FromName();
form.ShowDialog();
this.Close();

先隐藏,再关闭。这样子就不会把主窗体也Close了。
VeryShooter 2011-05-11
  • 打赏
  • 举报
回复
把Main方法中
Application.Run(new Form1());

改为
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Form1 f1=new Form1();
f1.Show();
Application.Run();
}

但是这样程序的Exit是个问题。
sky001sky 2011-01-05
  • 打赏
  • 举报
回复
不能关了第一个吗??只能隐藏??
sky001sky 2011-01-05
  • 打赏
  • 举报
回复
还是不行,两个都关了啊!
henry14kidd5 2010-11-10
  • 打赏
  • 举报
回复
form2 f2=new form2();
f2.show();
this.hide();
这个方法可以用
djs82 2010-10-17
  • 打赏
  • 举报
回复
17楼方法真的不错 十分感谢
PYTech 2009-07-02
  • 打赏
  • 举报
回复
Form1 form = new Form1();
form.show();
this.Dispose(false);


这个可以!!!
ianbj 2009-05-12
  • 打赏
  • 举报
回复
我 在 winform 中 遇到 这样的问题

一个窗体上 的控件要是超过20个的话(这些控件 都有背景图片)
在首次显示时 会出现 绘制刷屏
如果在该窗体显示后再最小化再最大化后
还会出现这样的效果


然后为了减轻这样的负面效果
我试用了下面的方法


frm.RightToLeft = RightToLeft.Yes;
frm.RightToLeftLayout = true;

frm.BackgroundImage = Common.GetImageByPath(string.Format(DPPath,btn.Tag));


但是主窗体的背景图片又绘制不上去……

有没有 别的方法处理 winform 中的 刷屏现象

this.SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.UserPaint | ControlStyles.DoubleBuffer, true);
我也用了但是还是那样……

或者说

frm.RightToLeft = RightToLeft.Yes;
frm.RightToLeftLayout = true;
如此设置下 怎么么把窗体的背景图片绘制上去……

据我判断:刷屏现象是应为窗体上的图片太多 我做的这个东东类似“连连看”游戏
本来最适合用C++做,但我已经用winform做了请各位帮帮忙……ss
Jock.Chen 2009-05-08
  • 打赏
  • 举报
回复
是否要做登录界面啊?下面是例子,测试通过.
新建项目添加两窗体frmLogin,frmMain,frmLogin窗体中添加两按钮,分别命名为btnOK,btnCancel,按钮代码如下:

private void btnOK_Click(object sender, EventArgs e)
{
this.DialogResult = DialogResult.OK;
}

private void btnCancel_Click(object sender, EventArgs e)
{
this.DialogResult = DialogResult.Cancel;
}


Main方法代码:

/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
frmLogin login = new frmLogin();
if (login.ShowDialog() == DialogResult.OK)
{
Application.Run(new frmMain());
}
}

YL.L 2009-05-08
  • 打赏
  • 举报
回复
把主窗体一开始就做成隐藏的,在后台运行,并自动呼叫一个子窗体1~

把一个子窗体1做成貌似主窗体的样子~在他上边呼叫子窗体2~

这样几个子窗体之间关关开开对主窗体都不造成影响了~~

代码不会写,这是觉得应该这样去实现~·不晓得有没有参考价值~学习了。
ginni215 2009-05-08
  • 打赏
  • 举报
回复
强调一点,就是不可能打开一个子窗体再把主窗体给关掉,效果是什么都没打开,但程序直接就关闭了~
CqCoder 2009-05-08
  • 打赏
  • 举报
回复
如果主窗体为Form1,子窗体为Form2

把Form1的属性:isMdicontainer设置为true

给主窗体中拉进一个botton1;双击(写代码)
如下:
Form2 myForm2 = new Form2();
myForm2.MdiParent = this;
this.close();
myForm2.Show();
npy601 2009-05-08
  • 打赏
  • 举报
回复
学习一下。
woa168789 2009-05-08
  • 打赏
  • 举报
回复
学习一下!!
feng052601 2009-05-08
  • 打赏
  • 举报
回复
form f1=new form();
f1.f1.ShowDialog();
this.hide;
加载更多回复(35)

110,535

社区成员

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

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

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