我正在尝试使用一种方法来更新Windows窗体中的StatusStripLabel。具体来说,目前,我想要做的就是测试能够在用户点击按钮时更新该标签。我的代码就是这个(非常简单):
namespace CardReader
{
public partial class frmRead : Form
{
public frmRead()
{
InitializeComponent();
}
private void btnProcess_Click(object sender, EventArgs e)
{
StatusUpdate((Button)sender,"Stand by...");
}
private void btnCancel_Click(object sender, EventArgs e)
{
Application.Exit();
}
private void btnProcess_StatusUpdate(object sender, EventArgs e)
{ }
private void frmRead_Load(object sender, EventArgs e)
{
btnProcess.StatusUpdate = p => this.tsStatus.Text = p.ToString();
}
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public Action<Button, string> StatusUpdate { get; set; }
}
}
问题是在frmRead_Load
事件中,Visual Studio 2015中的错误说:
&#34; Button不包含StatusUpdate的定义,并且找不到包含Button类型的第一个参数的StatusUpdate的扩展方法。&#34;
我在这里缺少什么?
答案 0 :(得分:0)
首先,您的StatusUpdate
操作位于表单中,而不是按钮。
其次,您的行动定义为:
public Action<Button, string> StatusUpdate { get; set; }
哪个匹配函数:
void StatusUpdate(Button b, string s){}
但你只是在这里指定一个参数匿名函数:
btnProcess.StatusUpdate = p => this.tsStatus.Text = p.ToString();
所有这一切应该是:
this.StatusUpdate = (p, s) => this.tsStatus.Text = p.ToString();