Примечание : часть серии: C #: доступ к членам формы из другого класса и Как получить доступ к объектам формы из другого файла cs в C # .
Hello
Идея состоит в том, чтобы уведомить пользователя с помощью памятки, когда пакет получен / отправлен в клиенте TCP.
После нескольких исправлений наиболее подходящим решением, похоже, было это
public string TextValue
{
set
{
this.Memo.Text += value + "\n";
}
}
Вот как это называется
var form = Form.ActiveForm as Form1;
if(form != null)
form.TextValue = "Test asdasd";
Однако при вызове кода возникает исключение из-за небезопасного вызова потока. Я нашел решение в msdn , но я не могу понять, какой метод они там использовали.
Это мой римейк, который не работает.
private void SetTextMemo(string txt)
{
if(this.Memo.InvokeRequired)
{
this.Invoke(SetTextMemo,txt); //error here
}
else
{
this.Memo.Text += txt + "\n";
}
}
ошибка:
Аргумент '1': невозможно преобразовать из 'группы методов' в 'System.Delegate'
Аргумент '2': невозможно преобразовать из 'строки' в 'объект []'
По сути, я пытаюсь получить доступ к заметке (или, скорее, сказал, добавить текст к заметке) из другого потока, используя Invoke. Я никогда не использовал его раньше, может быть, поэтому я неправильно понимаю свою ошибку.