2017-01-26 25 views
-5

私はWPFクライアントをC#でプログラミングしています。プログラムは登録デモです。名前を入力して、ここにいるかどうかを言い、それをユーザーがテキストボックスに入力したサーバーとポートに送信します。エラー:「非静的フィールド、メソッド、またはプロパティにオブジェクト参照が必要です...」

しかし、これをコードに適用しようとすると、「非静的フィールド、メソッド、またはプロパティにオブジェクト参照が必要です...」というエラーが表示されます。 これは「client.connect」の行にあるあなたがそれにMainWindowの任意の非静的メンバにアクセスできるようにしたい場合は...

namespace client 
{ 
    /// <summary> 
    /// Interaction logic for MainWindow.xaml 
    /// </summary> 
    public partial class MainWindow : Window 
    { 

     public MainWindow() 
     { 
      InitializeComponent(); 
     } 

     public class connectandsend 
     { 

      //if 'REGISTER' button clicked do this...{ 
      static void connect() 
      { 
       TcpClient client = new TcpClient(); // New instance of TcpClient class of the .Net.Sockets 
       client.Connect(server_txt.Text, Convert.ToInt32(port_txt.Text)); // Server, Port 
       StreamWriter sw = new StreamWriter(client.GetStream()); // New StreamWriter instance 
       StreamReader sr = new StreamReader(client.GetStream()); // New StreamReader instance 
      } 

      /* static void send() 
      { 
       stream write... name.text and 'here' or 'not here' ticked box? 
      } 

      } 
      */ 
     } 

    } 
} 
+2

彼は次のようにタイムアウトしました [質問に答える方法] – MethodMan

+0

変更を加えて、十分にうまくいくことを願っています。 – HJagger95

答えて

1

connect()方法はstaticすることはできません。このクラスまたはメソッド自体もMainWindowクラスへの参照を持たない限り、別のクラスに配置することはできません。

staticキーワードを削除し、MainWindowクラスにメソッドを移動:

public partial class MainWindow : Window 
{ 

    public MainWindow() 
    { 
     InitializeComponent(); 
    } 

    void connect() 
    { 
     ... 
    } 
} 

それともあなたはそれを呼び出すときの方法にserver_txt.Textとport_txt.Textを渡す:

static void connect(string server, int port) 
{ 
    TcpClient client = new TcpClient(); // New instance of TcpClient class of the .Net.Sockets 
    client.Connect(server, port); // Server, Port 
    StreamWriter sw = new StreamWriter(client.GetStream()); // New StreamWriter instance 
    StreamReader sr = new StreamReader(client.GetStream()); // New StreamReader instance 
} 

メインウィンドウ:

connectandsend.connect(server_txt.Text, Convert.ToInt32(port_txt.Text)); 
+0

私は、私のコメントアウトされたsend()メソッドもmain()の静的ではないメンバーにアクセスしようとしているのでsend()も無効にするべきであると言って正しいでしょうか?私は途中で最初のオプションを使いました。 – HJagger95

+0

はい、静的メソッドは、静的でないインスタンスメンバーにはアクセスできません。元の問題が解決した場合は、その答えを受け入れてから、新しい問題がある場合は新しい質問をしてください。 – mm8

+0

私の問題が何であったかを知り、それから学ぶことができて嬉しいです。ありがとう! – HJagger95

関連する問題