2 回答
TA贡献1783条经验 获得超4个赞
正如 Rufus 所说,我会使用 RadioButtons,而不是 CheckBoxes。将 RadioButtons 的 Tag 属性设置为您想要与它们关联的值,然后使用这样的函数来获取选中项的值。只需将 GroupBox 传递给函数并取回选中的 RadioButton 的值。
private int GetGroupBoxValue(GroupBox gb)
{
int nReturn = 0;
foreach (Control ctl in gb.Controls)
{
if (ctl.GetType() == typeof(RadioButton))
{
if (((RadioButton)ctl).Checked)
{
nReturn = Convert.ToInt32(ctl.Tag);
break;
}
}
}
return nReturn;
}
现在您所要做的就是使用 Rufus 提供的优秀代码来检查rentDuration TextBox 中的整数,您就大功告成了。
TA贡献1871条经验 获得超8个赞
控件的类型与创建公式几乎没有关系。要创建公式,您需要知道所有可能的输入以及如何组合它们以产生输出。这可以在一个方法中完成,例如:
private int GetTotalValue(int vehiclePrice, int driverPrice, int rentDuration)
{
// This is where your formula would go
return (vehiclePrice + driverPrice) * rentDuration;
}
诀窍是将表单控件的状态转换为可以插入到方法中的值。执行此操作的一种方法(不一定是最好的方法,但在您开始时可能最容易理解)是检查每个控件的值并在Click事件中为您的Submit按钮设置适当的值。
对于租期,我们可以使用该int.TryParse方法,该方法接受一个字符串和一个“out”int 参数,如果字符串是有效整数则返回真,否则返回假。当它退出时,如果转换成功,out 参数将包含 int 值。
对于其他控件,我们可以使用简单的if / else if语句来确定检查了哪个控件,然后相应地设置我们的值。在这个例子中,我们在 click 事件中使用临时变量来将每个参数的值存储到方法中。如果没有选中任何必需的控件,我们可以向用户显示一条消息并等待他们完成填写表单。
在这个例子中,我使用了单选按钮(并使用了opt前缀,这是很久以前的命名约定,我不确定是否仍然存在——它们曾经被称为选项按钮):
private void btnSubmit_Click(object sender, EventArgs e)
{
// Validate that rent textbox contains a number
int rentDuration;
if (!int.TryParse(txtRentDuration.Text, out rentDuration))
{
MessageBox.Show("Please enter a valid number for rent duration");
return;
}
// Determine vehicle price based on which option was selected
int vehiclePrice;
if (optToyotaPrado.Checked) vehiclePrice = 50000;
else if (optRollsRoyce.Checked) vehiclePrice = 250000;
else if (optSuzikiWagonR.Checked) vehiclePrice = 2500;
else if (optToyotaCorolla.Checked) vehiclePrice = 10000;
else
{
MessageBox.Show("Please select a vehicle");
return;
}
// Determine driver price
int driverPrice;
if (optWithDriver.Checked) driverPrice = 1500;
else if (optWithoutDriver.Checked) driverPrice = 0;
else
{
MessageBox.Show("Please select a driver option");
return;
}
// Finally set the text to the return value of our original method,
// passing in the appropriate values based on the user's selections
txtTotalValue.Text = GetTotalValue(vehiclePrice, driverPrice, rentDuration).ToString();
}
- 2 回答
- 0 关注
- 158 浏览
添加回答
举报