如何启动2个表格?

时间:2013-11-21 18:45:27

标签: c# .net winforms login startup

我正在尝试启动时有两个表单,一个是可以推开或关闭的登录表单,我只需要它打开主菜单的ontop。我试过这个:

public partial class MainMenu : Form
{
    public MainMenu()
    {
        InitializeComponent();
        Log_In login = new Log_In();
        login.Show();
        login.Activate();
    }

但是打开我的主菜单下面的Log_In表单。一旦程序启动,我怎么能让它弹出主菜单?谢谢!

5 个答案:

答案 0 :(得分:2)

您可以在显示上一个表单后显示表单。然后它将显示在前面和非模态中,因此您可以在继续使用背景形式的同时移动它。

    protected override void OnShown(EventArgs e)
    {
        base.OnShown(e);
        Login login = new Login();
        login.Show();
    }

答案 1 :(得分:1)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace WpfApplication3
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        private Login login;

        public MainWindow()
        {
            InitializeComponent();

            Loaded += MainWindow_Loaded;
        }

        void MainWindow_Loaded(object sender, RoutedEventArgs e)
        {
            Loaded -= MainWindow_Loaded;

            login = new Login();

            login.Show();
        }
    }
}

答案 2 :(得分:1)

您遇到的问题是您在主窗体构造函数中显示登录表单。主要形式尚未显示,但将在未来的某个时刻展示。您需要等到主表单显示完毕后显示登录表单:

public Form1()
{
    EventHandler shownHandler = null;
    shownHandler = (s, args) =>
    {
        Log_In login = new Log_In();
        login.Show();
        Shown -= shownHandler;
    };
    Shown += shownHandler;
}

请注意,为了防止在您隐藏然后重新显示登录表单的情况下多次显示登录表单,您可以在第一次调用时删除该处理程序。

答案 3 :(得分:0)

public partial class MainMenu : Form
{
    public MainMenu()
    {
        InitializeComponent();
        this.Shown += new System.EventHandler(this.MainMenu_Shown);
    }
    private void MainMenu_Shown(object sender, EventArgs e)
    {
        Log_In login = new Log_In();
        login.Show();
        login.Activate();
    }
}

答案 4 :(得分:-1)

尝试将表单2的所有者设置为:

public Form1()
{
    InitializeComponent();

    Form2 login = new Form2();
    login.Show(this);
}

How do you make a non-modal topmost dialog that is only topmost in regards to the parent form in WinForms?