Ошибка: "ссылка на объект требуется для нестатического поля, метода или свойства…"
У меня есть клиент WPF, запрограммированный с помощью C#. Программа представляет собой регистр демо, вы вводите имя и говорите, если они здесь, или нет, и отправляете его на сервер и порт, который вводится пользователем в текстовое поле.
Однако, пытаясь применить это в коде, я получаю ошибку: "ссылка на объект обязательна для нестатического поля, метода или свойства…". Это в строке "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?
}
}
*/
}
}
}
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
}
MainWindow:
connectandsend.connect(server_txt.Text, Convert.ToInt32(port_txt.Text));