2015-06-04 2 views
0

В настоящее время у меня есть окно входа в систему, которое открывает MainWindow с событием btnClick для запуска. Нажав кнопку в этом окне, это окно должно закрыть и открыть главный.Как получить доступ к другому окну из открытого в C#

Я пробовал, но я до сих пор не знаю, как получить доступ к главному окну от текущего.

Вот такой код. Надеюсь получить помощь. Благодаря! : P


using ....; 

..........; 

using ....; 

namespace SampleWindowApp 

{ 

    public partial class Login : Form 

    { 
     public Login() 

     { 

      InitializeComponent(); 
     } 

     private void Login_Load(object sender, EventArgs e) 

     { 

     } 

     private void loginbtn_Click(object sender, EventArgs e) 
     { 
      //ConnectionDAL obj = new ConnectionDAL(); 
      BL.LoginBL objBL = new BL.LoginBL(); 
      if(objBL.ValidateBL(txtUsername.Text, txtPass.Text)) 
       { 
        Mainfrmcs.Show; <--- 
        this.Close;  <--- 
       } 
      else 
       MessageBox.Show("Incorrect username or password."); 
     } 
    } 
} 

две строки показывают мне ошибку:

Only assignment, call, increment, decrement, await, and new object expressions can be used as a statement.

+1

Вызовы метода должны использовать '[MethodName]. ([Parameters]);' notation. т.е. 'Mainfrmcs.Show();' и 'this.Close();' – Fixation

+0

Это решает вторую ошибку, но первая еще не работает :( – charliejcao

+0

Mainfrmcs - это тип, создающий экземпляр типа, который вы используете 'new'. Посмотрите на ответ Tripesdeporc на пример – Fixation

ответ

0

Глядя на ваш код, он выглядит, как вы открываете форму после входа в систему, вместо написания Mainfrmcs.Show вам нужно написать new Mainfrmcs().Show(), а так как this.Close() закрывает программу, вам необходимо сменить ее this.Hide().

+0

Спасибо всем! – charliejcao

+0

Имейте в виду, что this.Close() закрывает программу, потому что она (скорее всего) определена как объект запуска в вашей программе.cs ** Application.Run (новый Login()); ** Вместо этого вы можете добавить новый класс (класс StartupObject), а затем в этом объекте введите Login MyLoginWindow = new Login(); Login.Show() И ТОГДА вы можете добавить MainForm MyMainForm = new MainForm(); MainForm.Show(); this.Close(); – Compa

1

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

. 
. 
. 
if(objBL.ValidateBL(txtUsername.Text, txtPass.Text)) 
    { 
     Form Mainfrmcs = new Mainfrmcs(); 
     // I suppose there is no MdiParent if you're closing the other but if there was : 
     Mainfrmcs.MdiParent = this; 
     Mainfrmcs.Show(); 
     this.Close(); 
    } 
else 
. 
. 
. 

(. Метод .close() не выходит из программы, если окно остается открытым Application.Exit() будет)
Надеюсь, что это помогает!