私は常にフォームの修飾子をプライベートに設定していますが、内部もパブリックも好きではありません。
今まで、私はこのように呼び出していました:
public string Addtext
{
if(InvokeRequired)
{
Invoke((MethodInvoker)delegate
{
textbox.text = value;
});
}
else
textbox.text = value;
}
しかし、フォームのすべてのメンバーにそのようなプロパティを追加することは、オブジェクト指向ではありません。
パラメータ(アクション)を呼び出す関数を作成したいです。最善を尽くしましたが、失敗しました-フォームメンバーがパブリックまたは内部である必要があります:(
public void PerformActionOnForm(Action<FormMain> action)
{
var form = Form.ActiveForm as FormMain;
object s = action.Clone();
if (form != null)
{
form.PerformAction(action);
}
}
public void PerformAction(Action<FormMain> action)
{
if (InvokeRequired)
Invoke(action, this);
else
action(this);
}
私のコードの2つの問題:
変更したいプロパティを != private にする必要があります:(
フォームがフォーカスされていない場合は機能しません。