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

 

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

Showing and hiding forms (VB)

Îåêßíçóå áðü ôï ìÝëïò dgg. Τελευταία δημοσίευση από το μέλος dgg στις 12-03-2010, 12:13. Υπάρχουν 3 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  12-03-2010, 09:24 57627

    Showing and hiding forms (VB)

    Καλημέρα σας,

    Έχω κάνει ένα πολύ απλό παράδειγμα (WindowsAppplication). Έχει δυο φορμες. Στην πρώτη φόρμα υπάρχει ένα Button το οπόιο πατώντας το ανοίγει η δεύτερη φόρμα και γίνεται hide η πρώτη.  Στη δημιουργία της δεύτερης φόρμας περνάω και την πρώτη στον constructor ώστε να υπάρχει ένα reference για να μπορώ να ξανα εμφανίσω την πρώτη, αν κλείσει η δεύτερη. Ώς εξής:

    Form1:
    Private Sub enterButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles enterButton.Click
                   
                Dim Form2 As New Form2(Me)
                Me.Hide()
                Form2.Show()
           
    End Sub


    Form2:
    Public Class Form2

        Private frm1 As Form1

        Public Sub New(ByVal frm1 As Form1)
            InitializeComponent()
            Me.frm1 = frm1
        End Sub

       Private Sub Form1_FormClosed(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosedEventArgs)         Handles MyBase.FormClosed
            frm1.Show()
        End Sub
    ...


    Η ερωτηση είναι: Γίνεται, όταν κλείνει η 2η φόρμα και γίνεται show η πρώτη να τρέξει το form_load event ή κάποια άλλη μέθοδος της πρώτης (που κάνει πχ update ένα listbox της πρώτης);
  •  12-03-2010, 10:26 57628 σε απάντηση της 57627

    Απ: Showing and hiding forms (VB)

    Οι φόρμες έχουν διάφορα events που ενεργοποιούνται κατά τη διάρκεια ζωής τους. Για παράδειγμα, στην περίπτωσή σου:

    Τρέχει η εφαρμογή:

    1. frm1.Load
    2. frm1.Activated
    3. frm1.VisibleChanged
    4. frm1.Shown 

      Ανοίγει η frm2
    5. frm1.VisibleChanged
    6. frm1.Dectivate

      Κλείνει η frm2
    7. frm1.VisibleChanged
    8. frm1.Activated

    To θέμα είναι ότι τα Deactivated/Activated ενεργοποιούνται και όταν κάνεις minimize/restore τη φόρμα. Ενδεχομένως να σου κάνει το VisibleChanged όπου θα ελέγχεις αν frm1.Visible = true και τότε θα γεμίζεις το listbox. Γενικά όμως, θα σου πρότεινα να βάλεις τον επίμαχο κώδικα σε κάποια method και να την καλείς explicitly από όπου χρειάζεται, πχ πριν να κάνεις form1.Show.

     


    Vir prudens non contra ventum mingit
  •  12-03-2010, 11:39 57631 σε απάντηση της 57628

    Απ: Showing and hiding forms (VB)

    Επειδή το σενάριο είναι κλασικό (ανοίγω μία φόρμα από μία άλλη και θέλω όταν κλείσει να ενημερωθεί κάτι στην πρώτη) υπάρχει πιο straight forward τρόπος να το πετύχεις (είναι καλύτερο να λες τι θέλεις από το να ζητάς τεχνική λύση για τρόπο που που μπορεί να μην κάθεται

    Στην πρώτη φόρμα

    Onclick

    frm2=new form(this);

    this.Hide

    dialogresult = frm2.shodialog()

    if dialogresult=OK

    {

    update list

    }

     

    sthn deyterh forma

    Onclosed

    if (should update list)

    this.dialogresult=OK

    else

    this.dialogresult=cancel

     

    Έτσι δεν χρειάζεται να τρέχει ο κώδικάς σου σε event που τρέχουν και σε άλλες περιπτώσεις και θα μπλέξεις σε μονοπάτια if then else και σε flags. το execution flow είναι πιο ξεκάθαρο έτσι. Καλείται η πρώτη φόρμα σαν να είναι συνάρτηση... επιστρέφει απάντηση και αναλόγος πράτεις στο συγκεκριμένο σημείο που θα υπάρχει η λογική σου.

  •  12-03-2010, 12:13 57633 σε απάντηση της 57631

    Απ: Showing and hiding forms (VB)

    Επειδή στο παράδειγμα δε θέλω κάτι περίπλοκο, θα χρησιμοποιήσω την λύση απλά με μία νέα μέθοδο στην form1 που θα κάνει update το list, καλώντας την στη form2 πριν το form1.show()

    Thanks για τις απαντήσεις
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems