2011-02-14 3 views
0

Une erreur « de référence d'objet non définie à une instance d'un objet » se produit lorsque j'utilise l'objet de classe cleave ci-dessous la boucle forRéférence objet non définie à une instance de l'objet

private void dateTimePickertodate_ValueChanged(object sender, EventArgs e) 
{ 
    if (dateTimePickertodate.Value <=dateTimePickerfromdate.Value) 
    { 
     MessageBox.Show("Choose Correct date"); 
     textBoxnumofdays.Clear(); 
    } 
    else 
    { 
     cleave = new LeaveApplication(constr); 
     span = dateTimePickertodate.Value - dateTimePickerfromdate.Value; 
     Getdays(); 
     if (Mode == 1) 
     { 
      textBoxnumofdays.Text = Convert.ToString(span.Days + 2); 
     } 
     else 
     { 
      textBoxnumofdays.Text = Convert.ToString(span.Days + 1); 
     } 
     for (int i = 0; i < daysofweek.Count; i++) 
     { 
      if (Mode == 1) 
      { 
       textBoxnumofdays.Text = Convert.ToString(span.Days + 2); 
       if (daysofweek[i].Equals(cleave.WeekDays[i])) 
       { 
        textBoxnumofdays.Text = Convert.ToString(span.Days - 1); 
       } 
      } 
      else 
      { 
       textBoxnumofdays.Text = Convert.ToString(span.Days + 1); 
       if (daysofweek[i].Equals(cleave.WeekDays[i])) 
       { 
        textBoxnumofdays.Text = Convert.ToString(span.Days - 1); 
       } 
      } 
     } 
    } 
} 
+5

Vous devriez regarder le débogage vous-même d'abord - par exemple, dans l'IDE quelle ligne ne l'exception se produit sur? Et quelles sont les variables à ce moment-là? Il y a beaucoup de choses que vous pouvez faire pour diagnostiquer vous-même ... –

+0

Ou au moins poster l'erreur exacte, avec le numéro de ligne, et l'appel de méthode qui déclenche cette erreur. Avez-vous essayé * quelque chose *? –

+0

cleave.WeekDays a une valeur nulle .. mais il a de la valeur dans sa classe .. comment puis-je accéder à cette valeur dans le code de la forme – Riya

Répondre

1

Etes-vous sûr que le tableau WeekDays est initialisé dans votre constructeur LeaveApplication. Sinon, il va jeter un NullReferenceException dans votre déclaration:

if (daysofweek[i].Equals(cleave.WeekDays[i]))

2

quand iam en utilisant l'objet de classe Cleave ci-dessous la boucle for

vous ne montrer quoi que ce soit en dessous de la boucle for et cleave non déclarée dans la méthode - donc nous déduisons que c'est un champ. On peut donc supposer une des deux choses:

  • la date sélectionnée n'a pas été une date valide, donc cleave n'a jamais été attribué new LeaveApplication(constr);
  • l'événement n'a pas tiré, dateTimePickertodate_ValueChanged n'a jamais été invoquée - à nouveau, cleave n'a pas été attribué
+0

dans l'architecture de 3 niveaux comment puis-je accéder au formulaire dans la classe .. est-il possible? Si plz aidez-moi .. si j'utilise une liste dans la forme et si j'ajoute des éléments de la semaine à cette liste je pense que ..Comment puis je faire ça? – Riya

0

mis simplement une instance de cleave n'a pas été créée par le temps que vous souhaitez utiliser.

Avez-vous vérifié que ce n'est pas null et qu'une instance non nulle de cleave a été créée?

L'un des problèmes est que nous devons supposer que cleave, constr et span sont des champs dans votre « forme » et qu'ils sont de la définition de type et qu'ils sont accessibles et valides pour le fil que votre code est en cours d'exécution.

modifier

Voir plus de commentaires. Si l'une des données utilisées sur votre formulaire est transmise par du code qui ne s'exécute pas sur le même thread que votre interface graphique plutôt que récupérée par la classe de formulaire, vous devez définir un délégué sur votre formulaire qui peut être utilisé par ce code mettre à jour les données. En utilisant "formulaire classe" .Invoke (fonction de délégation) type de fonctionnalité.

Questions connexes