Ray*_*Ray 0 .net c# visual-studio-2010
得到错误:
Error 1 'string RadioGroupTester.Form1.chkReceipt_CheckedChanged(object, System.EventArgs)' has the wrong return type
Run Code Online (Sandbox Code Playgroud)
当我编译一个非常简单的程序来理解无线电和复选框控件.
这是表单的代码如下:
private string rdoMastercard_CheckedChanged(object sender, EventArgs e)
{
if (rdoMastercard.Checked)
return "You have selected Mastercard";
else
return "You have selected Visa";
}
private string chkReceipt_CheckedChanged(object sender, EventArgs e)
{
if (chkReceipt.Checked)
return "You will receive a receipt";
else
return "You will not receive a receipt";
}
private string chkRecurring_CheckedChanged(object sender, EventArgs e)
{
if (chkRecurring.Checked)
{
return "You will be charged monthly";
}
else
return "This is a one time payment";
}
Run Code Online (Sandbox Code Playgroud)
以下是表单的样子:

我在这做错了什么?我道歉,但我仍然是C#和VS 2010的新手.
谢谢,雷
您无法从事件处理程序返回任何内容.你的意思是显示一个消息框吗?或者通过标签提供反馈?它会是这样的:
privatestringvoid rdoMastercard_CheckedChanged(object sender, EventArgs e) { if (rdoMastercard.Checked)returnMessageBox.Show("You have selected Mastercard"); elsereturnMessageBox.Show("You have selected Visa"); }
和你的其他例子一样.此示例使用消息框,但您可以设置Label的文本或其他内容.
原因?当你从事件处理程序返回一些东西时,你如何期望C#知道你想做什么?事件处理程序处理事件,仅此而已.
编辑:那么对于你想要做的事情,它将是这样的:
private void btnConfirmChoices_Click(object sender, EventArgs e) {
string str = string.Empty;
if(rdoMastercard.Checked)
str += "You have selected Mastercard\n";
else
str += "You have selected Visa\n";
if (chkReceipt.Checked)
str += "You will receive a receipt\n";
else
str += "You will not receive a receipt\n";
if (chkRecurring.Checked)
str += "You will be charged monthly";
else
str += "This is a one time payment";
MessageBox.Show(str);
}
Run Code Online (Sandbox Code Playgroud)