注:シリーズの一部: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を使用して別のスレッドからメモにアクセスしようとしています(または、おそらくメモにテキストを追加しようとしています)。これまで使用したことがないので、間違いを誤解している可能性があります。