注意:系列的一部分:C#:从另一个类访问表单成员以及如何在 C# 中从另一个 cs 文件访问表单对象。
你好,
这个想法是在 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 从另一个线程访问备忘录(或者更有可能是在备忘录中添加文本)。我以前从未使用过它,也许这就是我误解我的错误的原因。