Быстрое и грязное решение:
Перейдите к Properties
из listView2
в конструкторе winforms и найдите Modifiers
. Затем выберите Public
, как вы видите на картинке ниже:

А теперь это будет доступно
Более элегантное решение:
Создайте свойство в первой форме, в котором есть только геттер. В этом геттере вы можете безопасно вернуть columnHeader1
:
public ColumnHeader ColumnHeader { get { return this.listView1.Columns["columnHeader1"]; }}
или
public ColumnHeader ColumnHeader { get { return this.columnHeader1; }}
EDIT:
Похоже, вы бы предпочли иметь все значения из этого столбца. Так что в этом случае вам придется вернуть все значения, что можно сделать так:
public List<string> AlllValuesFromColumn
{
get
{
int indexOfColumn = listView2.Columns.IndexOf(this.columnHeader1);
return listView2.Items.OfType<ListViewItem>().Select(x => x.SubItems[indexOfColumn].Text).ToList();
}
}
Чтобы добавить все значения одним ударом к ComboBox
, вы можете использовать AddRange :
comboBox1.Items.AddRange(Form2.AlllValuesFromColumn.ToArray());
РЕДАКТИРОВАТЬ 2:
Но решение, которое я лично предпочел бы, это хранить источник данных в дополнительной переменной. Это можно обойти. Там нет магии.