繁体   English   中英

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

[英]Error - No overload for “method” matches delegate 'System.EventHandler'?

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#的新手,所以我不完全了解为什么会发生此错误。

您所有事件方法上的签名都是错误的。 第一个参数应该是代表触发事件的控件的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"));

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM