WPF中如何实现一个窗体控制另一个窗体

创建了一个主窗体mainwindow和一个新窗体newwindow
mainwindow和newwindow中各有一个open按钮
当点击mainwindow中的按钮时,隐藏mainwindow,并打开newwindow
当点击newwindow中的按钮时,关闭newwindow,并显示mainwindow

这个要怎么做呢,求大神帮忙解答

net

3个回答

如果只有两个 可以通过Application.Current.MainWindow拿到主窗口对象
主窗口Open中 隐藏MainWindow 创建NewWindow并显示
子窗口Open中 关闭NewWindow 显示MainWindow

xmoer
「已注销」 厉害了,这个才是正解啊
大约 3 年之前 回复
hardtoking
hardtoking 此才为正解,简单直观,谢谢大神
3 年多之前 回复
crj8902
草昌 建议 显示MainWindow 通过NewWindow的Closed事件来实现
3 年多之前 回复

你是想在点第二个窗体(Form2)的按钮时显示第一个隐藏的窗体(Form2)吧。
首先Form1上点击按钮显示Form2,隐藏自己是很容易的,
Q:其次在Form2上点击按钮,可以关闭Form2但如何显示隐藏的Form1呢?
S:Form1上写一个让Form1显示的方法,在Form2上写一个事件,该事件和Form1中的方法绑定起来。
当点击Form2中的按钮时将会触发事件,即执行Form1中的方法。试试吧

Form1代码:

 namespace 窗体测试
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Form2 f2 = new Form2();
            f2.Show();
            this.Visible = false;
            //Form2中的事件和Form1绑定起来
            f2.form1ShowEvent += form1Show;
        }
        //Form1中的一个方法
        private void form1Show() {
            this.Visible=true;
        }
    }
}

Form2代码:

 namespace 窗体测试
{
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            this.Close();
            form1ShowEvent();

        }
        public event Action form1ShowEvent;
    }
}

你在open按钮写一个点击事件嘛 做的工作是:隐藏本窗口打开新窗口
同样在close按钮一样处理

qq_29878627
西南交一枝花 回复hardtoking: 就在你当前这个窗口做嘛 就实例化你当前这个mainwindow 并不是再实例化一个。你的open按钮是在mainwindow上的吧 你加一个button_click事件 用来跳转到一个新的窗体,这个隐藏你可以写在新的窗体里
3 年多之前 回复
hardtoking
hardtoking 我通过实例化一个窗体来做的话,是又新建立了一个mainwindow,并不是原来的那个 当关闭程序时会发现关不掉,因为还有一个隐藏的窗体在运行
3 年多之前 回复
qq_29878627
西南交一枝花 回复hardtoking:他想实现的不就是这个功能,就是实例化一个。不过你说的第二个 我没听懂
3 年多之前 回复
hardtoking
hardtoking 如果通过这种方式,只能通过实例化一个窗口才能调用操作,要不访问不到 还一个是,通过这种方式打开的窗口,不是隐藏的那一个,而是又新创建了一个
3 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问