如何解决如何使多个返回true的条件在C#中执行?
我有一个checkedListBox,用户可以在其中选择想要更新的内容。我希望他们能够自由更新1台机器的5个特征。因此,当他们只想更新1件东西时,就不必提供其他4个特性。另外,当他们想要更新5个特征时, 一口气就能做到。为此,我有以下if语句:
if (clbcharacteristicsToUpdate.CheckedItems.Count != 0)
{
if (clbcharacteristicsToUpdate.GetSelected(0))
{
currentITime = Convert.Todouble(tbCurrentITime.Text);
MessageBox.Show(currentITime.ToString());
dh.UpdateCurrentITime(machineNr,currentITime);
}
if (clbcharacteristicsToUpdate.GetSelected(1))
{
cycleTime = Convert.Todouble(tbCycleTime.Text);
MessageBox.Show(cycleTime.ToString());
dh.UpdateCycleTime(machineNr,cycleTime);
}
if (clbcharacteristicsToUpdate.GetSelected(2))
{
nrOfLinesPerCm = Convert.ToInt32(tbNrOfLinesPerCm.Text);
MessageBox.Show(nrOfLinesPerCm.ToString());
dh.UpdateNrOfLinesPerCm(machineNr,nrOfLinesPerCm);
}
if (clbcharacteristicsToUpdate.GetSelected(3))
{
heightOfLamallae = Convert.Todouble(tbHeightOfLamallae.Text);
MessageBox.Show(heightOfLamallae.ToString());
dh.UpdateHeightOfLamallae(machineNr,heightOfLamallae);
}
if (clbcharacteristicsToUpdate.GetSelected(4))
{
if (rbLTB.Checked)
{
machineType = 2;
MessageBox.Show(machineType.ToString());
}
else if (rbSTB.Checked)
{
machineType = 1;
MessageBox.Show(machineType.ToString());
}
if(!rbLTB.Checked && !rbSTB.Checked)
{
MessageBox.Show("Select a machine type to update!");
return;
}
dh.UpdateType(machineNr,machineType);
}
}
我的问题是,当我选择并更新1件东西时,它可以很好地工作。但是当我选择多个时,它只会执行最后一个返回true的if语句。我考虑过使用if-else,但是只有第一个返回true的将被执行。我还考虑过为每种可能性使用if语句。但是,由于我可以更新5个特征,因此有25种可能性,而我不想有25条if语句。预先感谢!
解决方法
GetSelected
不会检查该项目是否已被检查,而是已被实际选择。
例如,在下面的图像中,“ {2}”将对GetSelected
返回true。是选中的,而不是选中的。
相反,您可以执行类似检查clbCharacteristicsToUpdate.CheckedItems
属性的操作,以获取实际检查的项目。
GetSelected方法实际上来自ListBox
继承的CheckedListBox
类。
尝试一下: 这是我在按钮上创建的辅助方法。
private void button1_Click(object sender,EventArgs e)
{
CheckList();
}
此方法查看是否已检查项目,并遍历已检查项目的集合,调用最后一个方法。
private void CheckList()
{
if (clbCharacteristicsToUpdate.SelectedItems.Count != 0)
{
foreach (int indexChecked in clbCharacteristicsToUpdate.CheckedIndices)
{
CheckSelectedItem(indexChecked);
}
}
}
最后,这里根据索引采取适当的操作。
private void CheckSelectedItem(int index)
{
if (index == 0)
{
//Do stuff on Zero
MessageBox.Show("Zero");
}
if (index == 3)
{
//Do stuff on One
MessageBox.Show("Three");
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。