错误 - “方法”没有重载匹配委托'System.EventHandler'?

时间:2015-04-22 00:15:11

标签: c# winforms visual-studio-2013 parse-platform

private async void submitRequestButton_Click(DateTime dateFormat, DateTime startFormat, DateTime endFormat, EventArgs e)
{
    ParseObject request = new ParseObject("Shifts");
    request["Name"] = ParseUser.CurrentUser.Username;
    request["Shift"] = shiftBox.Text;
    request["Rental"] = rentalBox.Checked;
    request["Location"] = locationBox.Text;
    request["Date"] = dateFormat.ToString("MMMM dd, yyyy");
    request["startTime"] = startFormat.ToString("t", CultureInfo.CreateSpecificCulture("en-us"));
    request["endTime"] = endFormat.ToString("t", CultureInfo.CreateSpecificCulture("en-us"));

    await request.SaveAsync();
}

private DateTime datePicker_ValueChanged(DateTime dateFormat, EventArgs e)
{
    dateFormat = datePicker.Value;

    return dateFormat;
}

private DateTime startTimePicker_ValueChanged(DateTime startFormat, EventArgs e)
{
    startFormat = startTimePicker.Value;

    return startFormat;
}

private DateTime endTimePicker_ValueChanged(DateTime endFormat, EventArgs e)
{
    endFormat = endTimePicker.Value;

    return endFormat;
}

我不明白为什么我在方法2,3和4中收到此错误。

  

"方法"没有过载匹配委托' System.EventHandler'?

如果您需要查看更多代码,请告诉我们。我非常确定所有内容都已正确连接。

看起来错误来自:this.datePicker.ValueChanged += new System.EventHandler(this.datePicker_ValueChanged);(其他2种方法也是如此)。

请帮忙!我是C#的新手,所以我不完全理解为什么会出现这种错误。

2 个答案:

答案 0 :(得分:2)

所有事件方法的签名都是错误的。第一个参数应该是object,表示触发事件的控件,返回类型应为void

private void datePicker_ValueChanged(object sender, EventArgs e)
{
    // Either cast "sender" to the appropriate type of control,
    //  or just reference the control directly if only one could be subscribed

    datePicker.Value
}

看起来你甚至不需要这些活动。只需在执行时从其他方法中引用控件。

request["Date"] = datePicker.Value.ToString("MMMM dd, yyyy");
request["startTime"] = startTimePicker.Value.ToString("t", CultureInfo.CreateSpecificCulture("en-us"));
request["endTime"] = endTimePicker.Value.ToString("t", CultureInfo.CreateSpecificCulture("en-us"));

答案 1 :(得分:1)

您的事件方法应如下所示:

private void datePicker_ValueChanged(object sender, EventArgs e)
{
    DateTimePicker picker = (DateTimePicker)sender;
    //do stuff
}