2011-11-14 14 views
-1

私はWPF c#アプリケーションを使用しています。私は、DataGridを含むユーザーコントロールを持っています。 私は、マウスの右ボタンをクリックして、ユーザーコントロールからパブリックイベントを送信しようとしています。ここ は、作成した公開イベントnullイベントの参照例外

public event MouseButtonEventHandler datagridMouseClick; 

で次のデータグリッドのこのイベントハンドラに解雇されることになって:

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 
} 

それは私とNullReferenceExceptionを与えます。なぜ私が理解するのを助けることができますか?事前のおかげで、任意のヘルプは よろしく

イベントが(上記以外のdllがあるので、実際には別のプロジェクト)を別のクラスで処理され感謝.. だから、そのほかのクラスが、ここで初期化されるときに耳を傾け...

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 */ 

    } 
検索は、上記の第一のコード

が含まれているオブジェクトの名前です私はここでの問題は、最初のコードから提示されたので、私は別のクラス/プロジェクト(から発射イベントを聞くしようとしているということだと思います

a .dll)そのようにして現在のクラスはリスナーを初期化せず、それをnullに保ちます。私は上記のsearch.datagridDoubleClickでこのEXACTメソッドを使っていて、完璧に動作しています。 PS。私は-1を手に入れません、とにかく貴重な質問のように聞こえます。

+1

例外はどの列にスローされますか? –

+1

どちらの行にエラーが表示されますか? – ChrisF

+0

どのラインが投げているのかを教えてください。 – asawyer

答えて

4

datagridMouseClickがNullと異なるかどうかをチェックして、あなたのイベントを購読しているかどうかを確認する必要があります。

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

私はすでにそれを試みました。しかし、その方法は、コードがnullでイベントが発生しないため、コードを無視することです。私は例外が表示される理由を知りたいです – user1035909

+0

誰もイベントを聞いていなければ、それを起こさないのが理にかなっています。 あなたのコードのどこかに何かがありますか? datagridMouseClick + = SomeEventHandler? – MBen

+0

私は同意します...何か(コントロールまたはオブジェクト)にイベントを割り当てる必要があります – Sandy

関連する問題