Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Object reference not set to an instance of an object...

Îåêßíçóå áðü ôï ìÝëïò Bill . Τελευταία δημοσίευση από το μέλος Bill στις 15-07-2008, 09:40. Υπάρχουν 6 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  13-07-2008, 17:10 43432

    Object reference not set to an instance of an object...

    Έχω τρεις φόρμες Form1 ,Form2 ,Form3

    Στη Form1 κάνω μια μεθοδο public και μετά καλείτε η Form2 ως εξής:

    Form2 f2 = new form2(this)

    f2.show()

    Μετά μέσα στη Form2 καλείτε η Form3

    πάλι με Form3 f3 = new Form3(form1)

     f3.show()

    Και μετά στη Form3 καλώ την μέθοδο που έχω στη Form1 και σκάει και μου βγάζει το μύνημα του τίτλου πάνω!!!

    Κάνω κατι λάθος στην κλήση της Form3 απο τη Form2??


    select DATEDIFF(dd,GetDate(),'20140731') AS EΠΟΜΕΝΕΣ_ΔΙΑΚΟΠΕΣ
  •  13-07-2008, 17:47 43433 σε απάντηση της 43432

    Απ: Object reference not set to an instance of an object...

    Δώσε μας λίγο παραπάνω κώδικα. Εχεις φτιάξει δικό σου constructor και περνάς την φόρμα σαν παράμετρο, και μετά κάνεις τι; Τι ακριβώς θες να κάνεις; Λίγες παραπάνω πληροφορίες και κώδικας θα ήταν καλό για να μας βοηθήσει.


    Παναγιώτης Κεφαλίδης

    "Για να επιτύχεις, θα πρέπει το πάθος σου για την επιτυχία να είναι μεγαλύτερο απο τον φόβο σου για την αποτυχία"

    Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Παρακαλώ διαβάστε τους όρους χρήσης.
  •  13-07-2008, 19:23 43435 σε απάντηση της 43433

    Απ: Object reference not set to an instance of an object...

    Σωστά περνάω σαν παράμετρο τη Φόρμα1 στη Φόρμα2.Μέχρι εκεί όλα είναι εντάξει! Παραθέτω πως είναι ο κώδικας σε κάθε φόρμα :

    Στη Φόρμα 1

    onClick :

    Form2 f2 = new Form2(this);

    f2.show();

    this.hide();

    Στη Φορμα 2

    public partial class form2 : form

    {

         public form1  cmpID;

         public form2(form1 cmp)

         {

               InitializeComponent();

               this.cmpID = cmp; 

         }

         onClick event ///Εδω καλώ τη Form3 ένα event click απλά

          new Form3(cmpID).Show();

    }

    Μετά μέσα στην Form3 καλώ την public method πού έχω στην Φόρμα1

    Στην αρχή γράφω :

       Form1 sCMP;

       public Form3(Form1 cmp)

      {

             InitializeComponent();

             this.sCMP = cmp;

      }

     //Και μετά σε ένα σημείο στο κώδικα μέσα στη Form3 καλώ την method

       sCMP.myMethod();  

      Με Debuger μόλις φτάσει σε αυτή τη γραμμή τότε το πρόγραμμα σκάει.Δε ξέρω σιγουρα αλλά νομίζω οτι πρέπει να δημιουργήσω τη Φορμα2 και μετά....!!Υπάρχει άλλος τρόπος να καλώ μια μέθοδο μιας Φόρμας απο οπουδήποτε θέλω χωρίς να μπλέκω με τα παραπάνω.....

     


    select DATEDIFF(dd,GetDate(),'20140731') AS EΠΟΜΕΝΕΣ_ΔΙΑΚΟΠΕΣ
  •  13-07-2008, 22:15 43438 σε απάντηση της 43435

    Απ: Object reference not set to an instance of an object...

    Στον Debugger, έλεγξε αν το sCMP είναι NULL πριν συνεχίσεις με την εκτέλεση της γραμμής. Αν δεν είναι null, τότε το πρόβλημα είναι μέσα στον κώδικα της MyMethod() που καλείς.

    Σε γενικές γραμμές πάντως, αν μου επιτρέπεις, καλό είναι να μη σχεδιάζεις την εφαρμογή σου με αυτόν τον τρόπο. Καλό είναι να επιλέξεις έναν τρόπο από τους διάφορους που αναφέρονται συχνά σε βιβλία, στο Internet σε blogs, στο MSDN, στο CodeProject κλπ, για να χωρίσεις το UI από τη λογική της εφαρμογής.

    Σε κάθε περίπτωση βέβαια, για να κάνεις κάτι στα γρήγορα, δεν θα έπρεπε να έχεις πρόβλημα να καλείς ένα public method από μια φόρμα, αρκεί η φόρμα αυτή να υπάρχει την στιγμή της κλήσης και να μην έχει γίνει dispose.

    Πέτρος
  •  14-07-2008, 11:42 43443 σε απάντηση της 43438

    Απ: Object reference not set to an instance of an object...

    Τι εννοείς να σχεδιάζω με διαφορετικό τρόπο? Εγω έχω μια κεντρική φόρμα και απο εκεί συνήθως καλώ τις άλλες φόρμες. Αν έχεις κάποιο link με παράδειγμα να δω κάτι θε με βοηθούσε..! Ευχαρηστώ!


    select DATEDIFF(dd,GetDate(),'20140731') AS EΠΟΜΕΝΕΣ_ΔΙΑΚΟΠΕΣ
  •  14-07-2008, 12:06 43445 σε απάντηση της 43443

    Απ: Object reference not set to an instance of an object...

    Εννοώ πως αν η εφαρμογές που φτιάχνουμε έχουν πολλές λειτουργίες και άρα πολλές φόρμες που κάνουν πολλά πράγματα κλπ κλπ... τότε ο παραδοσιακός τρόπος, του να πετάμε methods μέσα στις φόρμες και να πειράζουμε το state της μιας φόρμας από άλλες φόρμες με άμεσο τρόπο, θα κάνει πολύ δύσκολη τη συντήρηση της εφαρμογής.

    Θα σου δώσω κάποια links, όχι απαραίτητα για C# ή για WinForms, αλλά η θεωρεία μπορεί να εφαρμοστεί παντού. Μπορείς να πάρεις μια γεύση για το ζήτημα και αν θέλεις αργότερα να το ψάξεις περισσότερο. Δε χρειάζεται τώρα ντε και καλά να αλλάξεις τον τρόπο με τον οποίο αισθάνεσαι άνετα να αναπτύσσεις τις εφαρμογές σου. Απλώς, πιστεύω πως καλό είναι να γνωρίζεις ότι τίθεται ένα ζήτημα που το συζητούν διάφοροι experts στο χώρο μας και αν θέλεις κάποια στιγμή που έχεις χρόνο μπορείς να μάθεις περισσότερα:


    Απλώς να σημειώσω ξανά πως τα άρθρα αυτά περιγράφουν ιδανικές καταστάσεις και αρκετή λεπτομέρεια (τουλάχιστον κάποια). Αυτό δε σημαίνει πως πρέπει να φτιάξεις το δικό σου framework για να εφαρμόσεις την θεωρία. Υπάρχουν ήδη έτοιμα σε πολλές περιπτώσεις, όπως π.χ. το ASP.NET MVC (αν και είναι για ASP.NET). Εξάλλου, αν δεις κάποια στιγμή το WPF, το ίδιο το framework αρχίζει να σε σπρώχνει προς τα εκεί.


    Πέτρος
  •  15-07-2008, 09:40 43459 σε απάντηση της 43445

    Απ: Object reference not set to an instance of an object...

    Ευχαρηστώ Πέτρο για τα links..Τελικά η μέθοδο είχε πρόβλημα Embarrassed...
    select DATEDIFF(dd,GetDate(),'20140731') AS EΠΟΜΕΝΕΣ_ΔΙΑΚΟΠΕΣ
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems