2016-02-06 3 views
0

Так сценарий является то, что пользователь уже вошел в систему с учетными данными, и когда они добавили товар в корзину, я хочу, чтобы полное имя было взято из Account.cs в ProductGUI.csДоступ к переменной из другого класса C#

Это метод, который я пробовал, но он запрашивает пустой оператор Console.

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

Account.cs

private string fullname; 
    private string username; 
    private string email; 
    private string password; 

    public Account(string fullname, string username, string email, string password) 
    { 
     this.fullname = fullname; 
     this.username = username; 
     this.email = email; 
     this.password = password; 
    } 

    public string Fullname 
    { 
     get 
     { 
      return fullname; 
     } 
     set 
     { 
      fullname = value; 
     } 
    } 

ProductGUI.cs

private void addToCartButton_Click(object sender, EventArgs e) 
    { 
     // I believe I'm creating a new account based another question, but how do i pass the information without creating a new account. 
     Account a = new Account(); 
     Console.WriteLine(a.Fullname); 
    } 

LoginGUI.cs

private void signinButton_Click(object sender, EventArgs e) 
    { 
     bool temp = false; 
     foreach (DataRow row in dt.Rows) 
     { 
      if (row["Username"].ToString() == usernameTextbox.Text && row["Password"].ToString() == passwordTextbox.Text) 
      { 
       string fullname = row["Fullname"].ToString(); 
       string username = row["Username"].ToString(); 
       string email = row["Email"].ToString(); 
       string password = row["Password"].ToString(); 

       // I've saved the information into account. 
       acc = new Account(fullname, username, email, password); 
       temp = true; 
      } 
     } 
     if (temp) 
     { 
      MessageBox.Show("Welcome to Anime Fanatic.\n Enjoy your stay!"); 
      this.Hide(); 
      mainPageGUI mainPage = new mainPageGUI(); 
      mainPage.ShowDialog(); 
     } 
     else 
     { 
      MessageBox.Show("You have entered an incorrect Username or Password.\n Please try again!"); 
     } 
    } 

ответ

0

Вы должны сделать вас r Account, который известен как вашему графику входа в систему, так и графику вашего продукта. Самый простой (и самый уродливый и большинство из них не рекомендуется) способ сделать это, чтобы сделать его статическим:

class LoginGUI 
{ 
    public static Account acc; 

    [...] 
} 

class ProductGUI 
{ 
    private void addToCartButton_Click(object sender, EventArgs e) 
    { 
     Console.WriteLine(LoginGUI.acc.Fullname); 
    } 

    [...] 
} 

Но на самом деле, есть хороший прочитать о одноплодной шаблон. И зависимая инъекция тоже может помочь.

+0

Спасибо большое! теперь он работает :) Я также добавил публикацию в account.cs –

0

Вы можете достичь этого, создав статическое свойство fullname. Они полезны для абстрагирования глобальных данных в программах.

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