2016-06-29 7 views
0

プログラムでは、データベースから取得したユーザー名を入力します。私は別のフォームにそのユーザー名を渡す必要がありますが、私はそれを実行すると、最初のフォームに表示されますが、2番目のフォームでnullを返します( "Jugador"は名前を持つクラスです)。フォーム間に文字列を渡すとnullが返されます

public Usuario() 
{ 
    InitializeComponent(); 
} 
private string _Message; 
public string Message 
{ 
    get { return _Message; } 
    set { _Message = strName; } 
} 
public string strName; 

private void button1_Click(object sender, EventArgs e) 
{ 
    if (textBox1.Text!="") 
    { 
     Jugador jug = new Jugador(); 
     jug.Traemelo(textBox1.Text); 
     strName = textBox1.Text; 
     elegirTipo us = new elegirTipo(); 
     us.Show(); 
     this.Hide(); 
    } 


} 

、私はこれを持って私の他の形態であってもよい。(Usuarioは最初の形式である)

private void silabas_Load(object sender, EventArgs e) 
{ 
    Usuario usu = new Usuario(); 
    juga.Traemelo(usu.Message); 
} 

私は1つで私が渡しこれらの形態の真ん中にそれを追加しましたが、doens'しましたそこに変数が必要です。 助けてくれてありがとう!私は本当に何が起こっているのか分からない。一見

+0

'Usuario usu = new Usuario();'あなたは 'silabas_Load'に新しいインスタンスを持っていて、新しいインスタンスで値を失いました。 'Usario'に文字列変数を追加し、それを表示する前に' strName'を設定してください。 – Berkay

答えて

0

は、静的クラスを作成し、保持することである、と言いますその中の値これにより、クラスを使用する必要があるたびにクラスをインスタンス化しないようにすることもできます。

public static class Jugador 
{ 
    //ctor if needed 
    public static string Username { get; set; } 
} 

は今、あなたのコードでは、両方の設定場所またはユーザ名の値を取得:

//login process 
Jugador.Username = "some username"; 

//in application (get) 
textbox1.Text = Jugador.Username; 

私は、これはあなたが探しているものであると信じています。

0

 public string Message 
    { 
     get { return _Message; } 
     set { _Message = value } // instead of strName; 
    } 

なしMessage=something(セットが呼び出されることはありません)

_MessageはSTRNAMEと競うように思われます。 1つの変数で十分です。

EDIT:これに合わせて:あなたは新しいインスタンスすなわちUsuario有珠山=新しいUsuario()を作成しているので、

public Usuario() 
    { 
     InitializeComponent(); 
    } 
    private string _Message; 
    public string Message 
    { 
     get { return _Message; } 
     set { _Message = value; } 
    } 
private void button1_Click(object sender, EventArgs e) 
{ 
    if (!string.IsNullOrEmpty(textBox1.Text)) 
    { 
     Jugador jug = new Jugador(); 
     jug.Traemelo(textBox1.Text); 
     Message = textBox1.Text; 
     elegirTipo us = new elegirTipo(); 
     us.Show(); 
     this.Hide(); 
    } 
} 
1
// Usuario.cs 
public string Message { get; set; } 
... 
Silabas silabas = new Silabas(this); 

// Silabas.cs 
public Silabas(Usuario usuario) 
{ 
    // Here you can access the usuario.Message 
} 
0

問題です。他のクラスのオブジェクトの値はnullになります。私は静的変数を使用します。値を設定するためにあなたのUsuarioクラスの使用

public static string strName{get;set;} 

ではここにあなたの他のクラスでUsuario.strName = textBox1.Text;

を言うが、私は個人的にどうなるのか

private void silabas_Load(object sender, EventArgs e) 
    { 

     juga.Traemelo(Usuario.strName); 

    } 
関連する問題