#c# #winforms
#c# #winforms
Вопрос:
Чего я пытаюсь добиться, так это добавления элемента в comboBox24
, но только если строка содержится в comboBox10
.
case "PN63":
comboBox24.Items.Clear();
if (comboBox10.Items.Contains("CL150"))
{
comboBox24.Items.Add("ASME B16.5-150 RF");
}
else if (comboBox10.Items.Contains("PN16"))
{
comboBox24.Items.Add("FLG EN1092-1 PN16 B1");
}
else if (comboBox10.Items.Contains("PN25"))
{
comboBox24.Items.Add("FLG EN1092-1 PN25 B1"); ;
}
else if (comboBox10.Items.Contains("PN40"))
{
comboBox24.Items.Add("FLG EN1092-1 PN40 B1");
}
else if (comboBox10.Items.Contains("CL300"))
{
comboBox24.Items.Add("ASME B16.5-300 RF");
}
break;
Пока я добиваюсь добавления только одного (первого) элемента, даже если выполняется несколько условий.
Я не очень опытен, но я думаю, что оператор if прерывается после true
.
Может кто-нибудь, пожалуйста, указать мне, как этого добиться.
Комментарии:
1. Удалите все
else
ключевые слова. Затем все тесты выполняются. В противном случае он прерывается после первогоtrue
условия.
Ответ №1:
Это case "PN63":
меня беспокоит. У вас есть множество других случаев, которые имеют в основном тот же тип кода, но с разными значениями?
Если это так, я рекомендую вам использовать что-то более похожее:
case "PN63":
string[,] pairs = {
{"CL150", "ASME B16.5-150 RF" },
{"PN16", "FLG EN1092-1 PN16 B1" },
{"PN25", "FLG EN1092-1 PN25 B1" },
{"PN40", "FLG EN1092-1 PN40 B1" },
{"CL300", "ASME B16.5-300 RF" }
};
SetComboboxes(comboBox10, comboBox24, pairs);
break;
С помощью вспомогательного метода SetComboboxes()
:
private void SetComboboxes(ComboBox comboToCheck, ComboBox comboToAdd, string[,] pairs)
{
comboToAdd.Items.Clear();
for (int r = 0; r <= pairs.GetUpperBound(0); r )
{
if (comboToCheck.Items.Contains(pairs[r, 0]))
{
comboToAdd.Items.Contains(pairs[r, 1]);
}
}
}
Ответ №2:
Вы тестируете разные условия и хотите, чтобы все они выполнялись, поэтому вам следует удалить ключевое слово else и сделать их просто операторами if .
case "PN63":
comboBox24.Items.Clear();
if (comboBox10.Items.Contains("CL150"))
{
comboBox24.Items.Add("ASME B16.5-150 RF");
}
if (comboBox10.Items.Contains("PN16"))
{
comboBox24.Items.Add("FLG EN1092-1 PN16 B1");
}
if (comboBox10.Items.Contains("PN25"))
{
comboBox24.Items.Add("FLG EN1092-1 PN25 B1"); ;
}
if (comboBox10.Items.Contains("PN40"))
{
comboBox24.Items.Add("FLG EN1092-1 PN40 B1");
}
if (comboBox10.Items.Contains("CL300"))
{
comboBox24.Items.Add("ASME B16.5-300 RF");
}
break;