C#中方法Show.和ShowDialog的使用区别
具体使用中有什么区别呢。。我有两个窗口,一个登陆窗口,一个主界面窗口.我想实现的是,登陆窗口在主界面窗口的LOAD事件中出现,此时主界面窗口隐藏.如果登陆成功则关闭登陆窗...
具体使用中有什么区别呢。。
我有两个窗口,一个登陆窗口,一个主界面窗口.
我想实现的是,登陆窗口在主界面窗口的LOAD事件中出现,此时主界面窗口隐藏.
如果登陆成功则关闭登陆窗口进入主界面.
请问代码应该怎样修改呢? 展开
我有两个窗口,一个登陆窗口,一个主界面窗口.
我想实现的是,登陆窗口在主界面窗口的LOAD事件中出现,此时主界面窗口隐藏.
如果登陆成功则关闭登陆窗口进入主界面.
请问代码应该怎样修改呢? 展开
8个回答
展开全部
面对多窗口的调用的时候,我们往往不喜欢窗口之间的随意切换,那样我们还有花费时间寻找我们要用的窗口,而且,一但出现问题,窗口的顺序也有可能被再次打乱,很是不顺手,那么我们怎么办呢?
我们可以将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的区别。
我们可以将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的区别。
展开全部
面对多窗口的调用的时候,我们往往不喜欢窗口之间的随意切换,那样我们还有花费时间寻找我们要用的窗口,而且,一但出现问题,窗口的顺序也有可能被再次打乱,很是不顺手,那么我们怎么办呢?
我们可以将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的区别。
我们可以将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的区别。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你所说的就是登陆窗口和主窗体时一个窗体
实际上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,程序结束了!
************************************
你好好看看之后,再说吧,如果这样还不能明白的话,我也不会再补充答案了!你应该有一点自己的东西在里面,而不是说我给了你答案,你直接贴上去就可以使用,不知道我的建议你能接受否?
实际上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,程序结束了!
************************************
你好好看看之后,再说吧,如果这样还不能明白的话,我也不会再补充答案了!你应该有一点自己的东西在里面,而不是说我给了你答案,你直接贴上去就可以使用,不知道我的建议你能接受否?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
主要是ShowDialog方法有一个DialogReult的返回值,你可以在新窗体中给这个属性赋值,父窗体可以取得这个值,从而作一些判断.在窗体之间的信息交互上能起到一定的作用
------------------------------------------------
在主窗体Load中
Form2 f = new Form2();
this.Hide();
if(f.ShowDialog() == DialogResult.OK)
{
this.Show();
}
在Form2种,如果登录成功要写一句
this.DialogResult = DialogResult.OK;
this.Close();
------------------------------------------------
在主窗体Load中
Form2 f = new Form2();
this.Hide();
if(f.ShowDialog() == DialogResult.OK)
{
this.Show();
}
在Form2种,如果登录成功要写一句
this.DialogResult = DialogResult.OK;
this.Close();
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
show()无模式窗体 当代码运行到这里后 继续运行
showDialog()有模式窗体 当代码运行到这里有 停止运行 你可以输入 关闭后 代码继续运行
showDialog()有模式窗体 当代码运行到这里有 停止运行 你可以输入 关闭后 代码继续运行
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询