Передача значений и событий

Я использую С# У меня есть 02 форм, форма O1 Содержит кнопки 03 и форма 2 содержит TabControl с 3 вкладками. Как сделать вкладку 1 является активной вкладкой, когда я нажимаю кнопку "Первая кнопка" в форме 1, а вторая вкладка активируется, когда я нажимаю на вторую кнопку и то же самое для последней кнопки. Любая помощь. У меня нет идеи anu. Возможно ли это сделать, передав параметры?

5 ответов

Сделайте общедоступную переменную в общедоступном статическом классе, когда вы нажимаете кнопку в Form1, просто измените значение этой переменной, чтобы указать, что нажата определенная кнопка (вы можете, например, установить значение переменной public в 0, когда нажатие кнопки1, 1 при нажатии кнопки2... и т.д.). Теперь в Form2, прочитайте значение этой переменной и активируйте соответствующую вкладку в соответствии с этим значением.


В Form1 добавьте обработчики для каждого события нажатия кнопки:

foreach (Form f in Application.OpenForms)
 {
 if (f == Form2)
 {
 f.SelectTab(0)
 }
 }

В Form2 добавьте метод:

public void SelectTab(int tabIdx)
{
 this.TabControl1.SelectedIndex = tabIdx;
}


Установите свойство "Модификаторы" вашего tabcontrol на Форме 2 на "Публичный". Затем в Форме 1 используйте следующий код:

Form2 frm = new Form2 ();

//you will need to call frm.Show() somewhere to display form2

private void Button1_Click(object sender, EventArgs e)
{
 Form2.tabControl1.SelectedIndex = 0;
}

private void Button2_Click(object sender, EventArgs e)
{
 Form2.tabControl2.SelectedIndex = 1;
}


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

Изменение: Не всегда полезно отображать элементы управления в форме. Таким образом, вместо того, чтобы публиковать элементы управления, вы можете просто создать свойство в этом классе и установить выбранный индекс из этого свойства. Например:

public class Form2
{
 public int TabSelectedIndex 
 { 
 set { tabControl.TabIndex = value; }
 }
}

public class Form1
{
 private Form2 _form2 = new Form2();

 private void Button1_Click(object sender, EventArgs e)
 {
 _form2.TabSelectedIndex = 1;
 }
}


Добавьте метод Form2. Что-то liek.. void SetActiveTabIndex(Int32 index) {TabControl1.ActiveTab =...}

licensed under cc by-sa 3.0 with attribution.