Davor Bursac Ответов: 1

Событие сохраняет нулевое значение


Я пытаюсь запустить событие из дочерней формы в родительскую, но оно сохраняет нулевое значение. У меня есть делегат и событие, объявленные в дочерней форме, а также метод, который проверяет, не является ли событие нулевым. Этот метод вызывается при нажатии кнопки и должен уведомлять родительскую форму о некотором действии (обновление данных сетки в родительской форме.)

//Child form
public partial class InventuraForm
{
    public delegate void NekiDelegat();
    public event NekiDelegat MojEvent;  


    public void SendEvent()
    {
        if (MojEvent != null) MojEvent();
    }

    public void tsbSpremiZatvori_Click(object sender, EventArgs e)
    {
       //some code

        SendEvent();
    }
}           


//Parent form
public partial class InventuraFormPregled 
{ 
    InventuraForm _inv = null;

  public InventuraFormPregled()
    {
        InitializeComponent();

        _inv = new InventuraForm();
        _inv.MojEvent += new InventuraForm.NekiDelegat(LoadGridData);          

    }     

 private void LoadGridData()
 {
 //some code
 }

}


Любая помощь приветствуется.

Что я уже пробовал:

Я попытался найти похожее решение, но безуспешно.

1 Ответов

Рейтинг:
2

OriginalGriff

Вы, кажется, создали это как очень упрощенную версию, в которой отсутствует груз информации. Возможно, что важные части были потеряны в процессе "конденсации" - конечно, этот код не будет работать так, как вы описываете, сам по себе!
Взгляните на это: Передача информации между двумя формами, Часть 2: Ребенок-Родитель[^]- Я знаю, что это работает!


Davor Bursac

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

OriginalGriff

Кроме наследования-поскольку ни одно из них не наследуется; вторая форма никогда не отображается; и я понятия не имею, что еще. Но * что - то* есть: если верить этому коду, вы не создаете вторую форму с прикреплением обработчика событий-и вы говорите, что никакой обработчик никогда не прикрепляется!

Davor Bursac

Я не пытаюсь создать дочернюю форму, все происходит в то время, как дочерняя форма закрывается. Дело в том, что на родительской форме у меня есть сетка с инвентарным списком. Дочерняя форма содержит элементы каждого инвентаря. После того, как я закончил с редактированием элементов, я сохранения данных и закрытия дочерней формы (общественного недействительными tsbSpremiZatvori_Click() --&ГТ; "Spremi" средства сохранения и "Zatvori" означает закрыть), а затем пытается сигнализировать о родительской формы для обновления данных. ПС. Я только что попробовал с кодом, который вы мне вставили, то же самое происходит, EventHandler eh = null....