2010-05-18 7 views

ответ

0

передайте ссылку на поле со списком в форме 1, чтобы сформировать 2, возможно в конструкторе формы 2.

1
  • При открытии формы2 передайте объект, содержащий Form1, в качестве ссылки.
  • В Form2, доступ к ящику со списком, используя этот объект либо
    • непосредственно (обратите внимание, что это может потребовать изменения модификатора доступа в поле со списком из protected к public) или
    • (более элегантно), позвонив публичный метод Form1, написанный вами, который возвращает выбранный элемент в поле со списком.
1

Не очень хорошая идея, чтобы передать ссылку в форме 2 в конструкторе. Предположим, что следующий код находится в Form1.cs.

Form2 f = new Form2(); 
f.Tag = myCombo; 
f.showDialog(); 

Вы можете управлять комбо в Form2, получив тег и проанализируя его на ComboBox. Лучший способ:

Form2 f = new Form2(); 
Dictionary<string,object> controlsInForm1 = new Dictionary<string,object>(); 
controlsInForm1.Add("combo",myCombo); 
controlsInForm1.Add("label",myLabel); 
f.Tag = controlsInForm1; 
f.showDialog(); 

Теперь вы можете безопасно управлять элементами управления Form1 без сложного конструктора Form2.

0

Я бы создал общедоступное свойство только для чтения, которое возвращает выбранный элемент.

public object ComboValue 
{ 
    get 
    { 
     return combo.SelectedItem; 
    } 
} 

Вместо объекта используйте соответствующий класс/тип.

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