2013-07-31 3 views
3

Я пишу довольно простое приложение, в котором пользователь может выбирать определенные входы и обрабатывать данные. У меня возникает проблема, когда пользователь выбирает определенную строку из одной из комбинированных ящиков, она не отключает другие элементы управления. В основном, когда пользователь выбирает combo-box и выбирает «Initiate», все остальные элементы управления должны быть отключены.Отключить элементы управления, когда выбран конкретный элемент со списком

private void cbalpha_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    var operatorcheckbox = (CheckBox)sender; 
    foreach (Control cb in this.Controls) 
     if ((StringtDataChoiceorSelect.SelectedItem != "(Initiate)") 
     { 
      continue; 
     } 
     else 
     { 
      cb.Enabled = operatorcheckbox.Checked; 
     } 
} 
+0

проверить значение выбранного элемента – Ehsan

+1

'SelectedIndexChanged' является событием' ComboBox', поэтому 'sender' должен быть' ComboBox', но вы передаете 'sender' как' CheckBox' в обработчик 'cbalpha_SelectedIndexChanged', это веселая. Он должен выдать недопустимое исключение литых. :) –

ответ

0

если вы хотите DIABLE все элементы управления, почему вы используете значение флажок, чтобы включить Disable. Это должно быть просто это

private void cbalpha_SelectedIndexChanged(object sender, EventArgs e) 
    { 

     bool isEnabled = string.Compare(StringtDataChoiceorSelect.SelectedItem.ToString(),"(Initiate)",StringComparison.OrdinalIgnoreCase) == 0; 
     foreach (Control cb in this.Controls) 
      cb.Enabled = !isEnabled ; 

    } 
+0

Считаете ли вы, что 'sender' имеет тип' CheckBox' или 'ComboBox'? –

+0

@KingKing да, вы правы. Это неправильно. не заметил. изм. Не требуется altogather. – Ehsan

+0

Привет, извините, это его поле со списком, не знаю, почему у меня установлен флажок. С помощью вашего решения элементы управления отключены, если выбран какой-либо из элементов со списком против отключения элементов управления, только если выбран «инициация»? – user2637869

0

попробовать

private void cbalpha_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     var operatorcheckbox =(CheckBox)sender; 
     foreach (Control cb in this.Controls) 
     { 
      if ((StringtDataChoiceorSelect.SelectedItem != "(Initiate)") 
      { 
       if(!cb.Enabled) 
       { 
        cb.Enabled = true; 
       } 
      } 
      else 
      { 
       cb.Enabled = false; 
      } 
     } 
    } 
+0

Считаете ли вы, что 'sender' имеет тип' CheckBox' или 'ComboBox'? –

0

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

protected void ddltext_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    if (ddlPerc.SelectedValue.Equals("0.01")) 
    { 
     txtbox.Enabled = false; 
    } 
} 
0

Я бы воспользовался для этого делегатами и мероприятиями.

if(operatorcheckbox.Checked && 
    StringtDataChoiceorSelect.SelectedItem == "(Initiate)") 
{ 
    EventHandler -= checkboxdelegate; 
} 
else 
    EventHandler += checkboxdelegate; 

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

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