Расшарить ивент между формами.

jenya7
Дата: 22.05.2014 09:30:06
Я хочу чтоб при нажатии на кнопку или другой ивент, не важно на одной форме другие формы тоже видели этот ивент.
Подскажите как это сделать.
D129
Дата: 22.05.2014 10:23:01
jenya7
тоже видели этот ивент.

Извините за занудство, но надо понимать, что вам надо чтобы не "видели" а чтобы "ловили"?
jenya7
Дата: 22.05.2014 10:25:15
D129
jenya7
тоже видели этот ивент.

Извините за занудство, но надо понимать, что вам надо чтобы не "видели" а чтобы "ловили"?


а еще точнее подписаться на ивент :))
Изопропил
Дата: 22.05.2014 10:35:23
jenya7
а еще точнее подписаться на ивент :))

ну так подписывайтесь, контролы public сделайте чтоб их за пределами формы видно было
jenya7
Дата: 22.05.2014 10:59:55
я сделал так
//add a delegate
public delegate void ItemClickedHandler(object sender, ItemClickedEventArgs e);
// add an event of the delegate type
public event ItemClickedHandler ItemClicked;

// не знаю, зачем весь этот геморрой - можно данные передавать в статическом объекте  ну да ладно
public class ItemClickedEventArgs : System.EventArgs
       {
           // add local member variables to hold object
           private Test test;
           // class constructor
           public ItemClickedEventArgs(Test _test)
           {
               this.test = _test;
           }
           // Properties - Viewable by each listener
           public Test TestInstance
           {
               get { return test; }
           }
       }


а вот тут я получаю эксепшен, ругается что ItemClicked – null.
private void listViewSteps_Click(object sender, EventArgs e)
{
    if (listViewSteps.SelectedItems.Count > 1)
        return;
    Test selected_test = (listViewSteps.SelectedItems[0].Tag as Test);
    if (selected_test == null)
        return;
    SetTabControl(tabControlSettings, selected_test); 
    listViewSteps.LabelEdit = true;
    
    // instance the event args and pass a value
    ItemClickedEventArgs args = new ItemClickedEventArgs(selected_test);
    // raise the event with the updated arguments
    ItemClicked(this, args);
    this.Dispose();
}

как мне инициализировать ItemClicked?
Изопропил
Дата: 22.05.2014 11:02:06
jenya7
 this.Dispose();

зачем это?
jenya7
Дата: 22.05.2014 11:04:15
Изопропил
jenya7
 this.Dispose();

зачем это?


я сам задавался этим вопросом :)
Изопропил
Дата: 22.05.2014 11:19:01
jenya7
я сам задавался этим вопросом :)

а зачем пишешь?
jenya7
Дата: 22.05.2014 11:27:05
Изопропил
jenya7
я сам задавался этим вопросом :)

а зачем пишешь?

уже затер. а как инициализировать ItemClicked?
Изопропил
Дата: 22.05.2014 11:42:31
jenya7
уже затер. а как инициализировать ItemClicked?

перед возбуждением события нужно проверить есть ли у мего подписчики(просто на не null проверить)