2015-06-19 3 views
2

Я пытаюсь создать форму заказа, и поэтому я использую комбинированные поля, чтобы пользователь мог выбрать, какой элемент будет заказываться , Таким образом, когда пользователь выбирает элемент, который будет заказываться, второе поле со списком должно изменяться на размеры, которые может быть заказан конкретным элементом. Я заполнил второй комбинированный блок размерами для всех элементов, но я не уверены в том, как ограничить размеры для выбранного элемента. Я попытался использовать инструкции if для добавленияRange ко второму поле со списком, но это просто дублирует элементы в конце поля со списком. любая помощь, которая может быть оказана на этом, была бы весьма признательна. БлагодаряC# Windows Forms, как изменить значения второго поля со списком на основе выбора в первом поле со списком

private void itemBox_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     switch (((ComboBox)sender).SelectedItem as string) 
     { 
      case "Name in a Frame": 
       sizeBox.SelectedIndex = 0; 
       break; 
      case "Scrabble Frame": 
       sizeBox.SelectedIndex = 1; 
       break; 
      case "Plaque": 
       sizeBox.SelectedIndex = 2; 
       break; 
      case "Hearts": 
       sizeBox.SelectedIndex = 3; 
       break; 
      case "Now and Forever Print": 
       sizeBox.SelectedIndex = 4; 
       break; 
      case "Pat cushion": 
       sizeBox.SelectedIndex = 5; 
       break; 
      case "Emilia cushion": 
       sizeBox.SelectedIndex = 6; 
       break; 
     } 
    } 

    private void sizeBox_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     if (sizeBox.SelectedIndex == 0) 
     { 
      this.sizeBox.Items.AddRange(new object[]{ 
       "7x5", 
       "10x8", 
       "A4", 
       "Mug" 
      }); 
     } 
    } 

ответ

3

Вы можете просто заполнить коллекцию sizeBox непосредственно из itemBox выбран обработчик события изменения и удаления sizeBox_SelectedIndexChanged в целом.

Однако, для достижения чего вам необходимо очистить элементы в поле размера после того, как элемент был выбран. Вы можете достичь этого через:

sizeBox.Items.Clear(); 

Затем вы можете добавить элементы после того, как изменился выбранный индекс размера. Я бы просто использовать:

sizeBox.Items.Add("New Size"); 

Для хорошей практики я бы удалить использование волшебных строк, может поставить их в продуктах вспомогательного класса, который возвращает соответствующую строку.

Смежные вопросы