2017-01-01 4 views
0

La barre d'outils récemment ajoutée à mon application C#, et il y a une erreur lorsque vous cliquez sur l'élément de menu qui appelle la fonction mais lorsque vous appelez la fonction à partir de Windowsform Button cela fonctionne parfaitement. Voici ma fonction:ToolstripMenuItem Cliquez sur augmenter une erreur?

private void ShowAddDocument(object sender, EventArgs e) 
    { 

      foreach (var rr in this.gridEX1.GetDataRows()) 
      { 

       if (rr.Cells["Select"].Value != null) 
       { 
        if (rr.Cells["DocumentNumber"].Value.ToString() != "") 
        { 

         rr.BeginEdit(); 
         rr.Cells["Select"].Value = null; 
         rr.EndEdit(); 
        } 
        else 
        { 
         this.gridEX1.Tag = "SELECTED"; 


        } 
       } 

      } 

et j'utiliser la ligne suivante pour connecter la fonction et barre d'outils de MenuItem événement Click:

this.userControl11.IssueDocMenuItem.Click += new System.EventHandler(ShowAddDocument); 

mais quand cliquez sur barre d'outils de menu Item, il provoque une erreur: « Référence objet pas mis à l'instance d'un objet ". mais une partie est étrange quand j'utiliser le bouton WindowsForm et appeler la fonction par le code suivant:

private void button1_Click(object sender, EventArgs e) 
    { 
     ShowAddDocument(sender, e); 
    } 

Il mon code fonctionne sans erreur !!!.

+0

Et pour quelle ligne est-ce donné? Je ne peux faire que des hypothèses basées sur votre code. C'est soit 'gridEX' qui est nul,' GetDataRows' qui retourne null rendant 'rr' nul ou l'une des cellules récupère avec des index sur' rr' qui est nul ex. 'rr [" Select "]' et 'rr [" DocumentNumber "]' Voir aussi: http://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-and-how-do-i-fix- – Bauss

+0

ma grille n'est pas nulle et quand on clique sur Button1 cela fonctionne sans aucune erreur –

+0

Oui, parce qu'une exécution qui a été développée pendant de nombreuses années jette soudainement des exceptions pour des valeurs nulles dans un code aussi simple? Pour ne pas avoir l'air impoli ou quoi que ce soit, mais vous devriez toujours * supposer que votre propre code est incorrect. Avez-vous essayé d'inspecter les valeurs * ALL * avec un débogueur et pas seulement votre grille, ainsi que les valeurs qui sont retournées dans vos index de méthode/ligne. – Bauss

Répondre

0

J'ai déjà trouvé un comportement nommé ActAsSelector dans mon gridex Select Column et l'ensemble est à True alors mon problème résolu.happy maintenant.