2017-01-26 50 views
-5

我有用c#編程的WPF客戶端。該程序是一個註冊演示,您鍵入一個名稱並說出他們是否在這裏,然後將其發送到用戶輸入到文本框中的服務器和端口。錯誤:「非靜態字段,方法或屬性需要對象引用...」

但試圖在代碼中應用此代碼時,出現錯誤:「非靜態字段,方法或屬性需要對象引用...」。 這是對「client.connect」行......

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

請把t他超時閱讀以下內容 [如何提出問題](http://stackoverflow.com/help/how-to-ask) – MethodMan

+0

做出了改變,希望它足夠好,謝謝。 – HJagger95

回答

1

connect()方法不能是static,如果你希望能夠訪問MainWindow的任何非靜態成員在裏面。除非這個類或方法本身也提及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()方法應該也是void send(),因爲它也試圖訪問mainwindow的非靜態成員?順便說一句,我用第一個選項去了。 – HJagger95

+0

是的,沒有靜態方法可以訪問任何非靜態實例成員。如果您的原始問題已解決,請記住接受答案,如果您有新問題,請提出新問題。 – mm8

+0

太棒了,很高興我能夠知道我的問題是什麼,並從中學習,答案接受。謝謝! – HJagger95

相關問題