2013-11-21 5 views
1

Я пытаюсь создать 2 формы при запуске, одна из них - это форма журнала, которая может быть отброшена или закрыта, мне просто нужно открыть его в главном меню. Я пробовал:Как начать с 2 форм?

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

Но вот откройте форму Log_In под моим главным меню. Как я могу заставить его всплывать поверх моего главного меню, как только начинается программа? Благодаря!

+1

@ Брайан, что заставит программу прекратить, когда журнал в виде закрывается. Я просто видел событие «Load», возможно, я попытаюсь использовать это – Nathan

+0

@Nathan. Вы на 100% правильны (это было навсегда, так как я использовал Winforms). Удаление комментария. – Brian

+0

Возможно, вам нужно заглянуть в MdiParent, MdiChild. [См. Это] (http://msdn.microsoft.com/en-us/library/aa984329%28v=vs.71%29.aspx) –

ответ

2

Вы можете Показать форму после отображения предыдущей формы. Тогда это будет показано на передней и покадрово, так что вы можете переместить его о продолжая использовать фоновую форму ..

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

Там мы идем, кто-то получил это! Спасибо: D – Nathan

+0

Обратите внимание, что если основная форма скрыта, а затем повторно показана, это снова вызовет форму входа в систему. – Servy

+0

Что вы подразумеваете под скрытым? Как программно 'form.hide()'? Для меня нет проблем – Nathan

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(); 
     } 
    } 
} 
+0

Это winform, а не WPF. Тем не менее, сопоставимая концепция, вероятно, подходит. – Servy

+0

Ах .. ты прав пропустил это –

1

Проблема, которую вы испытываете, что вы показываете форму входа в главный конструктор формы. Основная форма пока не показана, но это будет показано в какой-то момент в будущем. Вы должны ждать, пока после того, как основная форма Закончился не показывается, чтобы показать форму входа:

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

Обратите внимание, что, чтобы предотвратить форму входа к показу несколько раз в том случае, если скрыть, а затем повторно показать форма входа в систему, вы можете удалить обработчик при первом вызове.

+0

Я уже нашел рабочий ответ, но это тоже может сработать. Upvote! :) – Nathan

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(); 
    } 
} 
Смежные вопросы