简体   繁体   中英

Null Reference exception of an event

I am using a WPF c# application. I have a user control which contains a datagrid. I am trying to send a public event from the user control , on a right mouse click. Here is the created public event

public event MouseButtonEventHandler datagridMouseClick;

Next its supposed to be fired on this event handler of the datagrid:

private void dataGrid1_MouseDown(object sender, MouseButtonEventArgs e)
{
    DependencyObject dep = (DependencyObject)e.OriginalSource;
    while ((dep != null) &&
    !(dep is DataGridCell) &&
    !(dep is DataGridColumnHeader))
    {
        dep = VisualTreeHelper.GetParent(dep);
    }
    if (dep is DataGridCell)
    {
        cell = dep as DataGridCell;
        while ((dep != null) && !(dep is DataGridRow))
        {
            dep = VisualTreeHelper.GetParent(dep);
        }
        row = dep as DataGridRow;
    }

    this.datagridMouseClick(sender, e);  // GIVING ERROR
}

It gives me a NullReferenceException. Can u help me figure out why. Thanks in advance, any help appreciated regards

The event is handled in another class (another project actually since the above is a dll apart) .. So its listened when the other class is initialized here..

public Window1()
    {
       InitializeComponent();      
        search.datagridDoubleClick +=new RoutedEventHandler(search_datagridDoubleClick);
        search.datagridMouseClick += new MouseButtonEventHandler(search_datagridMouseClick); /* Only this one gives error , even if the other one is handled exactly the same way in the code o.O */

    }

Where search is the name of the object that contains the above 1st code

I think the problem here is that i am trying to listen to an event fired from another class/project (since the first code is from a .dll) that way the current class doesnt initialize a listener and keeps it to null. eventhough i have used this EXACT method on search.datagridDoubleClick above and works perfectly (thats weird). PS. i dont get the -1 , sounds like a valuable question to me, anyways...

You need to check if somebody subscribed to your event by checking if datagridMouseClick is different from Null.

if (datagridMouseClick != null)
    this.datagridMouseClick(sender, e);

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM