2011-12-13 3 views
1

Мне нужно позвонить tabControl1_SelectedIndexChanged из Form1 в Form2как назвать событие из формы1 в форме?

Я понятия не имею, как это сделать.

+0

Вы должны называть свои формы и элементы управления. – SLaks

+0

Вы «вызываете» событие или пытаетесь «прослушать» событие в Form2. – LarsTech

ответ

6

В общем, вы не вызывают события из других классов. Идея состоит в том, что события раскрывают поведение подписки/отмены подписки. Реализация может выбрать, чтобы также выставить метод, который вызывает событие, но ему не нужно - и если используемый вами элемент управления не предоставляет такой метод для события SelectedIndexChanged, вы не можете его принудительно к.

Непонятно, чего вы пытаетесь достичь, но вы можете программным образом выбрать соответствующую вкладку - я бы ожидал, что поднять соответствующее событие. Вместо того, чтобы выставлять элемент управления вкладкой непосредственно из Form1 в Form2 (который, я надеюсь, является только именами-заполнителями - дайте ваши формы значащим именам), было бы проще выставить метод в Form1, чтобы выполнить выбор соответствующей вкладки. Это более значимая операция для выполнения на Form1 - это не так сильно зависит от деталей реализации. С другой стороны, вы можете создать еще более чистый дизайн с использованием шаблонов MVP (или того, что вам больше подходит).

+0

Я сделал это, теперь отлично работал, еще раз спасибо Джон! Я объявил tabControl1_SelectedIndexChanged как открытый, а затем: 'parentForm.tabControl1_SelectedIndexChanged (null, null);' –

+1

@ TheMask: Было бы лучше, если бы вы сохранили обработчик событий как частный метод, но сделали этот вызов более подходящим, именованный метод, который также * был вызван внешним. –

3

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

Затем передайте экземпляр первой формы ко второй форме и вызовите метод в этом экземпляре.

+0

Я сделал это, теперь у меня есть открытый член 'form1.tabControl1_SelectedIndexChanged' в' form2'. и я могу сделать: 'parentForm.tabControl1_SelectedIndexChanged (??, null)' мой вопрос сейчас - можно объявить элемент управления tabControl1 открытым? –

2

Как сказал Джон, вы не должны публиковать ... Вот некоторые другие примеры, которые я опубликовал ранее, которые явно проходят через создание двух форм и как пройти назад и вперед. Check these out