C#中方法Show.和ShowDialog的使用区别

 我来答
堕落魔御
2018-03-09 · TA获得超过1789个赞
知道小有建树答主
回答量:695
采纳率:0%
帮助的人:903万
展开全部
面对多窗口的调用的时候,我们往往不喜欢窗口之间的随意切换,那样我们还有花费时间寻找我们要用的窗口,而且,一但出现问题,窗口的顺序也有可能被再次打乱,很是不顺手,那么我们怎么办呢?
我们可以将show方法转化为showdialog方法,顾名思义,showdialog是一个进行路经绑定的show方法,他是不可以自由切换的,换言之,就是,当你没有关闭你当前页的前提下,你是无法关闭该页面后面的任一页面的,它是当前唯一(路经打开)为true的。
而show方法由于未进行绑定,它所显示的各个窗口、对话框是可以相互切换,而不需要关闭当前窗口、对话框。但是他由于未进行绑定,所以每个由show方法打开的窗口的顺序是非固定的,如果遇到什么问题,由show方法打开的窗口的顺序可能会有很大的改变!

show()仅仅是显示出来窗口界面而已```也就是和你执行的结果在同一窗口显示```所显示的窗口可以在后台运行```而showDialog()是一个对话框窗口界面```执行结果以新窗口界面出现```不允许进行后台运行```就是你想编辑什么的时候```非得先关闭showDialog()窗口界面才可以进行其他操作```

这就是它们的一点小区别了```

show()是非模式窗体.
showDialog()是模式窗体.
区别在于,以showDialog()打开的窗体,要等窗体关闭后才能操作其他窗体.而show()则不受此限制.

这是最经常的区别了,
还有一个我个人使用的心得,你可以了解

比如你先打开子窗体,想隐藏主窗体。
如果这个时候用Show的话,则会发生的事情是,打开子窗体的同时主窗体又显示出来,而使用ShowDialog()的时候主要当子窗体关闭的时候主窗体才会显示。
简单代码如下:
Form2 f2 = new Form2();
this.Visible = false;
f2.ShowDialog();
this.Visible= true;
这就是模态对话框的与Show的区别。
花开予梦初时
2018-03-09 · 娱乐、动漫、搞笑、八卦、热点、最前沿
花开予梦初时
采纳数:2737 获赞数:30264

向TA提问 私信TA
展开全部
面对多窗口的调用的时候,我们往往不喜欢窗口之间的随意切换,那样我们还有花费时间寻找我们要用的窗口,而且,一但出现问题,窗口的顺序也有可能被再次打乱,很是不顺手,那么我们怎么办呢?
我们可以将show方法转化为showdialog方法,顾名思义,showdialog是一个进行路经绑定的show方法,他是不可以自由切换的,换言之,就是,当你没有关闭你当前页的前提下,你是无法关闭该页面后面的任一页面的,它是当前唯一(路经打开)为true的。
而show方法由于未进行绑定,它所显示的各个窗口、对话框是可以相互切换,而不需要关闭当前窗口、对话框。但是他由于未进行绑定,所以每个由show方法打开的窗口的顺序是非固定的,如果遇到什么问题,由show方法打开的窗口的顺序可能会有很大的改变!

show()仅仅是显示出来窗口界面而已```也就是和你执行的结果在同一窗口显示```所显示的窗口可以在后台运行```而showDialog()是一个对话框窗口界面```执行结果以新窗口界面出现```不允许进行后台运行```就是你想编辑什么的时候```非得先关闭showDialog()窗口界面才可以进行其他操作```

这就是它们的一点小区别了```

show()是非模式窗体.
showDialog()是模式窗体.
区别在于,以showDialog()打开的窗体,要等窗体关闭后才能操作其他窗体.而show()则不受此限制.

这是最经常的区别了,
还有一个我个人使用的心得,你可以了解

比如你先打开子窗体,想隐藏主窗体。
如果这个时候用Show的话,则会发生的事情是,打开子窗体的同时主窗体又显示出来,而使用ShowDialog()的时候主要当子窗体关闭的时候主窗体才会显示。
简单代码如下:
Form2 f2 = new Form2();
this.Visible = false;
f2.ShowDialog();
this.Visible= true;
这就是模态对话框的与Show的区别。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
li_shengangel
2018-03-09 · TA获得超过140个赞
知道小有建树答主
回答量:280
采纳率:0%
帮助的人:148万
展开全部
你所说的就是登陆窗口和主窗体时一个窗体
实际上QQ就是这样的,它的登陆窗口和主窗体就是一个
我在做项目的时候,也曾做过类似的功能,下面是代码,你可以参考一下:
在Form_Load()里
{
this.LoginSub();
}
private void LoginSub()
{
this.Width=400;//调整窗体大小
this.Height=260;
this.CenterToScreen();
this.controlLogin.formmain = this;
this.Controls.Clear();
this.Controls.Add(this.controlLogin);//其中的controlLogin是你的登录界面,我将其做成了用户控件,方便加载
this.controlLogin.Dock=System.Windows.Forms.DockStyle.Fill;
}
//如果你的登陆验证成功后,调用LoginSuccess()函数
private void LoginSuccess()
{
this.Controls.Remove(this.controlLogin);//移除登陆界面
this.Controls.Add(this.panelFunction);//加载主窗体界面,panelFunction就是主窗体的所有控件所在。
this.panelFunction.Dock=System.Windows.Forms.DockStyle.Fill;
this.Width=780;//调整窗体大小
this.Height=515;
this.CenterToScreen();
}
ok,程序结束了!
************************************
你好好看看之后,再说吧,如果这样还不能明白的话,我也不会再补充答案了!你应该有一点自己的东西在里面,而不是说我给了你答案,你直接贴上去就可以使用,不知道我的建议你能接受否?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
avenger19
2018-03-09 · TA获得超过1298个赞
知道小有建树答主
回答量:972
采纳率:0%
帮助的人:1048万
展开全部
主要是ShowDialog方法有一个DialogReult的返回值,你可以在新窗体中给这个属性赋值,父窗体可以取得这个值,从而作一些判断.在窗体之间的信息交互上能起到一定的作用

------------------------------------------------
在主窗体Load中
Form2 f = new Form2();
this.Hide();
if(f.ShowDialog() == DialogResult.OK)
{
this.Show();
}

在Form2种,如果登录成功要写一句
this.DialogResult = DialogResult.OK;
this.Close();
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
前样红8762
2018-03-09 · TA获得超过170个赞
知道小有建树答主
回答量:458
采纳率:0%
帮助的人:261万
展开全部
ShowDialog是显示模式窗体.
show()是显示整个窗体.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式