Я пытаюсь сослаться на выбранный индекс поля комбинированного списка на моей mainform в если оператор в методе на второй форме. Некоторый поиск Google смутил меня немного. Самый очевидный ответ, который я вижу, просто делает управление полем комбинированного списка на общественности mainform, однако веб-сайты, которые я читал, кажется, указывают, что это не предпочтенный метод? Если это верно, каков предпочтенный метод? Я кодировал во вторичном методе конструктора для второй формы для принятия первой формы в качестве параметра при вызове, например:
Form2 form = new Form2(this);
form.Show();
И на второй форме:
public partial class Form2 : Form
{
Form1 form1;
public Form2()
{
InitializeComponent();
}
public Form2(Form1 fr1)
{
InitializeComponent();
form1 = new Form1();
form1 = fr1;
Таким образом, я думал, что мог просто сделать что-то как form1.combobox1. SelectedIndex, но провал...., что 'сообщество предпочтено' метод для движения о выполнении этого?
Что ж, вы можете просто вернуть свойство SelectedIndex
поля со списком, выполнив что-то подобное в классе Form1
или любой другой форме, содержащей поле со списком.
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public int SelectedIndex
{
get
{
return comboBox.SelectedIndex;
}
}
}
Затем, чтобы вызвать его, просто продолжите то, что вы делали до
public partial class Form2 : Form
{
Form1 form1;
public Form2()
{
InitializeComponent();
}
public Form2(Form1 fr1)
{
InitializeComponent();
// get rid of this line it's unnecessary
// form1 = new Form1();
form1 = fr1;
}
}
, и вызовите свойство в любом месте вашего класса Form2
, например, form1.SelectedIndex
.
Избегайте этого раздела, если он сбивает с толку, но вам действительно не нужно создавать поле для Form1
. Используйте вместо этого Form
ParentForm
и при необходимости приведите его к Form1
, например ((Form1) this.ParentForm) .SelectedIndex
В основной форме создайте открытое свойство, возвращающее поле со списком.