2010-04-24 7 views
0

Même espace de noms: 2 formulaires.erreur avec liste de chaînes en C#

public class Account  //frm1 
     { 
      public string Username; 
      public string Password; 

     } 

     public class ListAcc 
     { 
      public static List<Account> UserList; 
     } 

private void button1_Click(object sender, EventArgs e) 
     { 

      List<Account> UserList = new List<Account>(); 
      Account acc = new Account(); 
      acc.Username = textBox1.Text; 
      acc.Password = textBox2.Text; 
      UserList.Add(acc); 
     } 

private void button2_Click(object sender, EventArgs e) //frm2 
     { 
      string p = frmDangky.ListAcc.UserList[0].Username; // null ->error 
      string p = frmDangky.ListAcc.UserList[0].Password; // null ->error 
     } 

Quelqu'un m'aider? :(pourquoi ma chaîne est NULL ???????? la zone de texte n'est pas vide ... Merci!

Répondre

1

Vous voulez faire quelque chose comme:

public class ListAcc 
    { 
     public static List<Account> UserList = new List<Account>(); 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     Account acc = new Account(); 
     acc.Username = textBox1.Text; 
     acc.Password = textBox2.Text; 
     ListAcc.UserList.Add(acc); 
    } 

    private void button2_Click(object sender, EventArgs e) //frm2 
    { 
     string p1 = ListAcc.UserList[0].Username; // null ->error 
     string p2 = ListAcc.UserList[0].Password; // null ->error 
    } 
2

Dans le gestionnaire button1_Click, vous créez une variable locale UserList, au lieu d'utiliser l'électricité statique membre de ListAcc.

Essayez de changer

List<Account> UserList = new List<Account>(); 

à

ListAcc.UserList = new List<Account>(); 
0

Le code i s un désordre complet.

Et votre problème n'est pas la zone de texte (car même si elle serait vide la chaîne serait "" mais jamais nulle). Votre problème est que la UserList statique n'est jamais définie.

En outre, le compilateur avertit sur les constructions comme frmDangky.ListAcc.UserList. Il met en garde pour une raison, alors s'il vous plaît au moins corriger les avertissements.