我总是将表单上的修饰符设置为私有,我不喜欢内部也不公开。
直到现在我曾经这样调用:
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);
}
我的代码中有两个问题:
它要求我要更改的属性为 != private :(
如果表格不在焦点上,则不起作用。