2014-01-07 3 views
1

В Form1, когда прогрессбар завершена, то в еще части timer_tick событий следующий код написан мной:Как закрыть Form1 и открыть Form2

frmLogin login = new frmLogin(); 
login.Show(); 
timer1.Enabled = false; 
this.Hide(); 

Таким образом, любое решение, чтобы закрыть Form1 вместо шкуры Form1 ?

+1

Проблема заключается в том, что 'Form1' является' MainForm', и если вы его закрываете, приложение завершается. –

+0

не должно быть 'frmLogin.Show()'? –

ответ

1

У вас есть что-то, называемое ApplicationContext.

Используйте это так:

ApplicationContext applicationContext = new ApplicationContext(); 

FormX formX = new FormX(applicationContext); 
applicationContext.MainForm = formX; 

Application.Run(applicationContext); 

При закрытии Form1, руки над MainForm

FormY formY = new FormY(applicationContext); 
applicationContext.MainForm = formY; 

Другим вариантом является, чтобы сделать статический ApplicationContext. Это не потребовало бы его прохождения.

+0

Я не могу понять этот код. Пожалуйста, любой другой способ устранить эту проблему. – argciv

+0

@argciv: Что непонятно для вас? –

+0

На самом деле я не понимаю весь код. где записать первую часть кода и второй код строки, в котором местоположение или запись события. – argciv

0

Я хотел бы сделать это с основной формой:

public partial class MainForm : Form 
{ 
    public MainForm() 
    { 
     InitializeComponent();    
    } 

    protected override void OnLoad(EventArgs e) 
    { 
     base.OnLoad(e); 

     var login=new LoginForm(); 
     if(login.ShowDialog()==DialogResult.OK) 
     { 
      // Validation ok 
     } 
     else 
     { 
      this.Close(); 
     } 
    } 
} 

Так что перед основной формой показывает вверх, он загружает и показывает LoginForm. Когда это будет сделано, он закрывает LoginForm и показывает основную форму.

+0

Этот код не работает. Пожалуйста, у вас есть другое лучшее решение затем укажите этот код. – argciv

+0

Я связал код перед публикацией и дал желаемый эффект. Как это не работает? Можете ли вы уточнить. – ja72

Смежные вопросы