2010-04-21 4 views
0

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

if (mainForm.boolEdit == true) 
     { 
      this.cmbStatusBox.Items.AddRange(new object[] { 
      "Cooking", 
      "In-transit", 
      "Delivered"}); 
     } 
     else 
     { 
      this.cmbStatusBox.Items.AddRange(new object[] { 
      "Ordered"}); 
     } 

Я ставлю этот код в saveForm.Designer.cs и получил следующее сообщение об ошибке:

Дизайнер не может обрабатывать код в строке 205:

если (mainForm.boolEdit == верно) { { { "В пути", "Поставка"}); } else { this.cmbStatusBox.Items.AddRange (новый объект [] { «Упорядоченный»}); }

Код в методе 'InitializeComponent' генерируется конструктором и не должен быть изменен вручную. Удалите все изменения и попробуйте снова открыть конструктор.

Каковы мои альтернативы?

EDIT! Теперь я поставил дизайнер вернуться к нормальной жизни следующим образом:

this.cmbStatusBox.Items.AddRange(new object[] { 
     "Ordered", 
     "Cooking", 
     "In-transit", 
     "Delivered"}); 

и в formload, я поставил следующие:

if (mainForm.boolEdit == true) 
     { 
      this.cmbStatusBox.Items.AddRange(new object[] { 
      "Cooking", 
      "In-transit", 
      "Delivered"}); 
     } 
     else 
     { 
      this.cmbStatusBox.Items.AddRange(new object[] { 
      "Ordered"}); 
     } 

Проблема, теперь у меня есть как дизайнер и formload кладя имена в раскрывающемся списке. В идеале я просто хочу, чтобы они были из второй партии кода, но когда я нажимаю кнопку «Редактировать» (которая вызывает то, что уже сделано), выпадающие списки заполняются тем, что сохраняется, если дизайнер заполняет его. Если formload заполняет выпадающий список, при редактировании выпадающее меню не указывает, что уже было сохранено.

Любые идеи?

ответ

2

Нельзя изменять файл .designer.cs вручную. Альтернативой может быть использование конструктора формы для выполнения этой инициализации или в каком-либо событии загрузки.

+0

Так что я должен положить этот код в форму загрузки? – sark9012

+0

Да внутри формы или какого-либо другого метода «чтения»/«заполнения» - никогда не изменяйте конструкторский контент-файл – riffnl

1

Этот вид кода часто сидит в обработчике событий Form.Load.

0

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

this.cmbStatusBox.Items.Clear(); 

    if(mainForm.boolEdit) 
    { 
     this.cmbStatusBox.Items.AddRange(new object[] { 
      "Cooking", 
      "In-transit", 
      "Delivered"}); 
    } 
    else 
    { 
     this.cmbStatusBox.Items.AddRange(new object[] { 
      "Ordered"}); 
    }