返回主界面的问题

glacierkidd 2011-05-16 07:55:11
我设置了当点击主界面的功能按钮时,弹出子功能界面,同时主界面的Visible = false;但是在子界面里有一个返回主界面的按钮我是这样定义的
MainUi main = new MainUi();
main.Visible = true;
this.Close();
MainUi 是主窗口类。
可是点击之后的效果是直接关闭系统,不知道是什么错误,我是新手,求高手指教~~~~~
...全文
227 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
glacierkidd 2011-05-17
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 cjh200102 的回复:]
楼上分析很到位
[/Quote]
办法笨,但是好用了。谢谢了,问题已经解决~~~
glacierkidd 2011-05-17
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 weslonlovejall 的回复:]
this.Close();把这个去掉就不会关闭了。
[/Quote]
不知道为什么,用不了this.owner();提示有错误。
雪饮 2011-05-16
  • 打赏
  • 举报
回复
这个是最笨的方法,呵呵也很实在
在主窗体的按钮下面写:

private void button2_Click(object sender, EventArgs e)
{
Form2 f = new Form2();
f.ff = this;//把主界面临时保存在子窗体里面
f.Show();//显示子窗体
this.Visible = false;//主窗体隐藏
}

在子窗体的下面先定义一个 公共对象 :

public Form1 ff;//保存主窗体对象
private void button1_Click(object sender, EventArgs e)
{
ff.Show();//显示主窗体,等于楼主的意思 “返回主界面”
this.Close();//子窗体关闭
}
cjh200102 2011-05-16
  • 打赏
  • 举报
回复
楼上分析很到位
ohkuy 2011-05-16
  • 打赏
  • 举报
回复
你的方法我刚才测了一下没有错误,你也可以单独建一个项目加两个窗体试一下
不过这种方法要不断的创建新对象,不太好,占用资源太多
源码如下:

//这是主窗体的一个按钮单击事件
private void button1_Click(object sender, EventArgs e)
{
FormChild frm = new FormChild();
frm.Show();
this.Visible = false;
}

//这是子窗体的一个按钮单击事件
private void button1_Click(object sender, EventArgs e)
{
MainUi frm = new MainUi();
frm.Visible = true;
this.Close(); //这个只会关闭当前窗体即子窗体,不会关闭系统的
}

不过,我还是推荐你使用2楼的方法,更好一些
有一丁点暇疵,我再加一点注释你看一下

//这是主窗体的一个按钮单击事件
private void button1_Click(object sender, EventArgs e)
{
FormChild frm = new FormChild();
frm.Show(this); //this必须写,传递当前窗体
this.Visible = false;}

//这是子窗体的一个按钮单击事件
private void button1_Click(object sender, EventArgs e)
{
MainUi frm = (MainUi)this.Owner; //这里必须显示转换
frm.Visible = true;
this.Close();
}

hanzhehanzhe 2011-05-16
  • 打赏
  • 举报
回复
3楼说的太详细了,我就没什么补充的了
xuexiaodong2009 2011-05-16
  • 打赏
  • 举报
回复
MainUi main = new MainUi();

定义了一个新的 MainUi, 对原有的那个没有影响。
此时你的程序仍然在运行, 由于没有调用 MainUi.Show() 所以新定义的 MainUi 也没有显示。
龍过鸡年 2011-05-16
  • 打赏
  • 举报
回复
MainUi main = new MainUi();

定义了一个新的 MainUi, 对原有的那个没有影响。
此时你的程序仍然在运行, 由于没有调用 MainUi.Show() 所以新定义的 MainUi 也没有显示。

可以使用 2楼的方法

[Quote=引用 2 楼 caozhy 的回复:]

在加载子窗体的时候。

FormChild child = new FormChild();
child.Show(this);

返回:
MainUi main = this.Owner;
main.Visible = true;
this.Close();
[/Quote]

或者直接用

MainUi main = new MainUi();

定义了一个新的 MainUi, 对原有的那个没有影响。
此时你的程序仍然在运行, 由于没有调用 MainUi.Show() 所以新定义的 MainUi 也没有显示。

可以使用 2楼的方法

[Quote=引用 2 楼 caozhy 的回复:]

在加载子窗体的时候。

FormChild child = new FormChild();
DialogResult dr = child.ShowDialog(this);

dr.DialogResult = DialogResult.OK;

而不需要隐藏主界面
threenewbee 2011-05-16
  • 打赏
  • 举报
回复
在加载子窗体的时候。

FormChild child = new FormChild();
child.Show(this);

返回:
MainUi main = this.Owner;
main.Visible = true;
this.Close();
风之雨 2011-05-16
  • 打赏
  • 举报
回复
this.Close();把这个去掉就不会关闭了。

111,097

社区成员

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

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

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