У меня проблема, когда я пытаюсь получить доступ к элементам управления формы из другого класса. Моя программа висит в бесконечном цикле. Я знаю почему, но я не знаю, как правильно это записать.
Вот Form1.cs (к моей форме)Как получить доступ к элементам управления формы из класса C#
public Form1()
{
InitializeComponent();
Load config = new Load();
string[] data = config.readConfig("config.ini");
if (data.Length == 4) { //client
Client run = new Client();
run.startClient(data[1], Convert.ToInt32(data[2]));
}
else if (data.Length == 3) //server
{
Server run = new Server();
run.startServer(Convert.ToInt32(data[1]));
}
}
public void addLog(string dataLog){
richTextBox1.Text += dataLog;
}
и здесь Client.cs файл:
class Client
{
public void startClient(string ipAddr, int port)
{
Form1 form1 = new Form1();
TcpClient client = new TcpClient();
try
{
form1.addLog("Connecting...");
client.Connect(ipAddr, port);
form1.addLog("Connected to server: " + ipAddr + ":" + port.ToString());
}
catch
{
MessageBox.Show("We couldn't connect to server");
}
}
}
Как я могу изменить значение текста, не запуская каждый раз новый вид. Может быть, есть что-то вроде run_once?
Чтобы получить доступ к элементам управления Form1 в классе Client, вам необходимо создать внутренние свойства в Form1 или изменить свойство «Модификаторы» элементов управления, которые вы хотите обработать, на «внутренние». – Graffito
@Graffito Хотя это правда, его ясный он уже имеет доступ к членам, которые ему нужны, он просто не должен был создавать новую форму в 'Client' – BradleyDotNET