2017-11-30 13 views
-1

私は接続文字列を作成するメソッドを持っているクラスを持っています。他のウィンドウからその接続文字列にアクセスしたいですが、これは動作していません。これまでのコードです:クラス内のメソッドから文字列値を取得する方法は?

私のメインログインただ、ボタン上のクラスのメソッドを呼び出しているクリック

private void button_Click(object sender, RoutedEventArgs e) 
    { 
     Class1 kl = new Class1(); 
     kl.SQLCon(textBox, textBox_Copy); 

    } 

私のクラスには、次のようになります。ウィンドウ1から私はConStringを取得するメソッドを呼び出すとき

class Class1 
{ 
    string user = string.Empty; 
    string pass = string.Empty; 
    private string ConString = string.Empty; 

    public string User { get { return this.ConString; } set { this.ConString = value; } } 

    public void SQLCon(TextBox tb1,TextBox tb2) 
    { 
     user = tb1.Text; 
     pass = tb2.Text; 
     if (string.IsNullOrWhiteSpace(user) || string.IsNullOrWhiteSpace(pass)) 
     { 
      MessageBox.Show("Popuni sva polja"); 
      return; 
     } 
     SqlConnection con; 
     SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder(); 
     builder.DataSource = "DESKTOP"; 
     builder.InitialCatalog = "Manager"; 
     builder.IntegratedSecurity = false; 

     builder.UserID = user; 
     builder.Password = pass; 

     try 
     { 
      using (con = new SqlConnection(builder.ToString())) 
      { 
       con.Open(); 
       if ((con != null && con.State == System.Data.ConnectionState.Open)) 
       { 
        ConString = builder.ToString(); 
        MessageBox.Show("Uspesno logovan!" + ConString); 
        Window1 win = new Window1(); 
        win.ShowDialog(); 

       } 

      } 

     } 
     catch (SqlException ex) 
     { 
      MessageBox.Show(ex.Message); 
     } 

    } 
} 

さて、私は、空白の何も得ます問題はそれが見ていないということです文字列値のSQLConでは、クラスの先頭に定義されているので、それを探しています。 私はこのソリューションで動作するようにすることができます:ShowDialogを呼び出す前に、私はこの値を渡すことができる、Window1の文字列を持つことができます、win.stringCon = ConStringのようなもの、そしてこのworks.But

ウィンドウ1コード:

private void button_Click(object sender, RoutedEventArgs e) 
    { 
     Class1 myClass = new Class1(); 
     string conn = myClass.User; 

     MessageBox.Show(conn); 
    } 
+3

フィールド 'ConString'は、' User'が 'SQLCon'メソッドで返すフィールドです。しかし、あなたはWindow1の 'button_Click'ではこのメソッドを呼び出さない。注意:コンストラクタ 'new Class1()'を呼び出すたびに、このクラスの新しいインスタンスが作成され、すべてのメンバーはデフォルト値を持ちます。 –

+0

申し訳ありませんが、私はタイプミスでした。私はそれを編集しましたが、結果は同じです。 新しいClass1()についてのご意見はありますが、どうすればよいですか? – Alexander

+1

新しいインスタンスを常に作成するのではなく、フィールドのようにインスタンスをどこかに格納する必要があります。 –

答えて

0

ソリューション:これを行うあなたはそれを私が想像する方法を行うことはできません。しかしここにあなたができることがあります。 接続文字列になるWindow1に文字列(conString)を定義します。この行はwin.ShowDialog()を呼び出す前に配置します。

mw.conString = conString;

この方法では、新しいウィンドウに文字列が表示されます。また、1行で値をWindow1から別のウィンドウに移すことができます。

関連する問題