C#窗口切换问题:如何切换回主窗体

(环境VS2010,C#,WPF工程)是这样的,我有一个程序,本来就是Mainwindow,运行的时候自动显示的就是这个窗体,也没有经过实例化什么MainwindowXX... (环境VS2010,C#,WPF工程)
是这样的,我有一个程序,本来就是Mainwindow,运行的时候自动显示的就是这个窗体,也没有经过实例化什么Mainwindow XX=new XXXX的语句
现在我想做到这样:
为窗口Mainwindow设计一个小窗体,当点击Mainwindow上的按钮时,主窗体隐藏,小窗体显示;当点击小窗体上的一个按钮时,小窗体隐藏,主窗体恢复显示。(有点像悬浮窗那种的)
我已经知道可以用shutdown的方法使两者同步关闭,但是从小窗体恢复成主窗体时遇到了问题:

我在主窗体的cs文件中使用Preview smallwindow=new Preview()
在Window_Loaded中将smallwindow的visibility设置成hidden
在按钮事件中写this.Hide()以及smallwindow.Show()
但在子窗体Preview.cs中遇到了问题,不知道如何把主窗体恢复显示,this应该不管用了吧,而且Mainwindow没有那种new语句,也没有为它定义名称,这样也没法用XX.Visibility=XXX来实现了.如何破?
展开
 我来答
sleeplioncj
2013-05-17 · TA获得超过288个赞
知道小有建树答主
回答量:177
采纳率:0%
帮助的人:104万
展开全部
可以把主窗口作为参数传给子窗口
代码如下:
主窗口:
public partial class frmMain : Form
{
public static frmMain f0 = null; //用来引用主窗口
public frmMain()
{
InitializeComponent();
f0 = this; //赋值
}

private void button1_Click(object sender, EventArgs e)
{
new frmCx().Show();
this.Hide();
}

子窗口:
public partial class frmCx : Form
{

public frmCx()
{
InitializeComponent();
}
private void frmCx_FormClosing(object sender, FormClosingEventArgs e)
{
frmMain.f0.Show(); //显示主窗口
}
}
yxs0005
2013-05-17 · TA获得超过242个赞
知道小有建树答主
回答量:226
采纳率:0%
帮助的人:89万
展开全部
变量法
smallwindow 添加
public Mainwindow mainwindow ;

我在主窗体的cs文件中使用Preview smallwindow=new Preview()
添加 smallwindow.mainwindow = this;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友cdf48d1a7
2013-05-17 · 超过19用户采纳过TA的回答
知道答主
回答量:100
采纳率:0%
帮助的人:55.3万
展开全部
定义一个Mainwindow类型的变量mainwindow,当显示小窗体时,把this赋予小窗体中的mainwindow,然后就可以在小窗体中用mainwindow.hide()
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友3f2b73ab5
2013-05-17 · 超过63用户采纳过TA的回答
知道小有建树答主
回答量:118
采纳率:0%
帮助的人:118万
展开全部
在子窗体可以使用this.Owner来获取父窗体的实例
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yinfengnong
2013-05-17 · TA获得超过5619个赞
知道大有可为答主
回答量:2344
采纳率:89%
帮助的人:2252万
展开全部
//主窗体
public partial class MainForm : Form
{
    Preview smallWindow;
    public MainForm()
    {
        InitializeComponent();
        smallWindow = new Preview(this);
    }
    private void button1_Click(object sender, EventArgs e)
    {
        this.Hide();
        smallWindow.Show();
    }
}
//子窗体
public partial class Preview : Form
{
    private Form mainWindow;
    public Preview(Form mainWindow)
    {
        InitializeComponent();
        this.mainWindow = mainWindow;
    }
    private void button1_Click(object sender, EventArgs e)
    {
        this.Hide();
        mainWindow.Show();
    }
    private void Preview_FormClosed(object sender, FormClosedEventArgs e)
    {
        mainWindow.Show();
    }
}


已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式