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

 

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

εύρεση φορμών

Îåêßíçóå áðü ôï ìÝëïò yannis. Τελευταία δημοσίευση από το μέλος cap στις 24-07-2008, 23:12. Υπάρχουν 11 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  23-07-2008, 23:26 43648

    εύρεση φορμών

    Γειά σας. έχω ένα μεγάλο project και θα ήθελα να φτιάξω μία διαδικασία να διαβάσω όλες τις φόρμες του και να τις αποθηκεύσω σε έναν πίνακα , ενδεχομένως με κάποιο πεδίο τύπου 'σχόλια'

    χρησιμοποιώ vb.net 2005 αλλά μου δίνει την δυνατότητα να πάρω collection μόνο από τις ανοιχτές φόρμες. υπάρχει καμία άλλη δυνατότητα για να 'διαβάσω' όλες τις φόρμες του project?

     


    Yannis
  •  24-07-2008, 10:51 43652 σε απάντηση της 43648

    Απ: εύρεση φορμών

    Τι εννοείς "να διαβάσεις" τις φόρμες; Οι φόρμες είναι κλάσεις κι αυτές και έστω και κλειστές, μπορείς μέσω reflection να φτιάξεις ένα instance, ωστόσο χωρίς να διευκρινίζεις τι είδους πληροφορίες θες να διαβάζεις από τις φόρμες δεν ξέρω αν αυτό που λέω θα σε βόλευε ή μήπως υπάρχει κάποια πιο απλή λύση.


    Vir prudens non contra ventum mingit
  •  24-07-2008, 11:00 43653 σε απάντηση της 43648

    Απ: εύρεση φορμών

    Μια εύκολη και γρήγορη λύση είναι να φτιάξεις ένα προγραμματάκι εξωτερικό που να κάνεις Loop τα αρχεία του project και από τα extensions των αρχείων να καταλαβαίνεις ποιο είναι φόρμα και ποιο όχι. Μπακάλικο δε λέω Smile αλλά δουλεύει σίγουρα.

    Manos
  •  24-07-2008, 11:29 43655 σε απάντηση της 43653

    Απ: εύρεση φορμών

    έχεις δίκιο τησ σκέφτηκα και εγώ αυτή την λύση αλλά θα πρέπει να διαβάζω και τις πρώτες γραμμές από το designer της καθε φρόμας για να σιγουρέψω ότι είναι φόρμα και γενικά μάλον θα είναι μπλέξιμο.

    δεν υπάρχει κάποιος ποιός απλός τρόπος για να διαβάσω τα ονόματα όλων των φορμών?

     


    Yannis
  •  24-07-2008, 11:35 43657 σε απάντηση της 43652

    Απ: εύρεση φορμών

    KelMan:

    Τι εννοείς "να διαβάσεις" τις φόρμες; Οι φόρμες είναι κλάσεις κι αυτές και έστω και κλειστές, μπορείς μέσω reflection να φτιάξεις ένα instance, ωστόσο χωρίς να διευκρινίζεις τι είδους πληροφορίες θες να διαβάζεις από τις φόρμες δεν ξέρω αν αυτό που λέω θα σε βόλευε ή μήπως υπάρχει κάποια πιο απλή λύση.

    εννοω να βρισκει τα ονοματά τους δηλαδή σκέψου ότι χρειάζομαι ένα combobox το οποίο να γεμίζει με τα ονόματα όλων των φορμών , πως θα το κανω με reflection?

     


    Yannis
  •  24-07-2008, 12:52 43661 σε απάντηση της 43657

    Απ: εύρεση φορμών

    Αν θέλεις τα ονόματα των κλάσεων, δηλαδή π.χ. Form1, Form2 κλπ, τότε χρησιμοποιώντας reflection μπορείς να πάρεις τα ονόματα όλων των φορμών που βρίσκονται στο ίδιο assembly με αυτό από το οποίο τρέχει η κύρια φόρμα σου ως εξής:

    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

    'Get the currently executing assembly
    Dim a As Assembly
    a = Assembly.GetExecutingAssembly()

    'Iterate all types in the assembly
    For Each t As Type In a.GetTypes()

    'Find out if current type is a Form
    If t.IsSubclassOf(GetType(System.Windows.Forms.Form)) Then

    'Exclude our own form
    If Not t.Name.Equals("Form1") Then
    ComboBox1.Items.Add(t.Name)
    End If
    End If

    Next

    End Sub

    Φυσικά θα κάνεις Imports System.Reflection, ενώ υποθέτω οτι έχεις μια εναρκτήρια φόρμα με όνομα Form1 και ένα combobox με όνομα ComboBox1.

     

    Αν τώρα θέλεις να πάρεις κάποιο property της φόρμας που να έχει ένα πιό φιλικό όνομα, π.χ. το Text property ή ακόμα και κάποιο δικό σου property, θα πρέπει να δημιουργήσεις instances των φορμών σου. Αυτό είναι σαν να φτιάχνεις μια καινούρια φόρμα μόνο και μόνο για να πάρεις πράγματα μέσω του reflection, οπότε είναι πιό αργό και πιό tricky. Παρ'όλα αυτά:

    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

    'Get the currently executing assembly
    Dim a As Assembly
    a = Assembly.GetExecutingAssembly()

    'Iterate all types in the assembly
    For Each t As Type In a.GetTypes()

    'Find out if current type is a Form
    If t.IsSubclassOf(GetType(System.Windows.Forms.Form)) Then

    'Exclude our own form
    If Not t.Name.Equals("Form1") Then

    Dim s As String
    Dim f As Form
    'Create an instance of the form
    f = CType(a.CreateInstance(t.FullName), Form)

    'Get the form's text property, or whatever other property we like
    s = f.Text

    'Add this to the combobox
    ComboBox1.Items.Add(s)

    End If
    End If

    Next

    End Sub

     


    Σωτήρης Φιλιππίδης

    DotSee Web Services

    View Sotiris Filippidis's profile on LinkedIn

    DotNetNuke them!
  •  24-07-2008, 13:03 43662 σε απάντηση της 43661

    Απ: εύρεση φορμών

    Είσαι φοβερός!!

    Να είσαι καλά το έψαχνα 1 μήνα και δεν έβρισκα τίποτα

     


    Yannis
  •  24-07-2008, 15:01 43664 σε απάντηση της 43662

    Απ: εύρεση φορμών

    Θα ήθελες να κλείσεις το θέμα και να επισημάνεις τις απαντήσεις που σε βοήθησαν;

     


    Σωτήρης Φιλιππίδης

    DotSee Web Services

    View Sotiris Filippidis's profile on LinkedIn

    DotNetNuke them!
  •  24-07-2008, 16:26 43665 σε απάντηση της 43664

    Απ: εύρεση φορμών

    συγγνωμη !!! πως το κάνω αυτό??

     


    Yannis
  •  24-07-2008, 16:34 43666 σε απάντηση της 43665

    Απ: εύρεση φορμών

    Σε όσες απαντήσεις σε βοήθησαν, κάνεις κλικ στο κουμπί "σημείωση ως απάντησης" και ο τίτλος της απάντησης γίνεται πράσινος. Ετσι μπορούν να βοηθηθούν και άλλοι χρήστες που πιθανόν να έχουν την ίδια απορία σε αυτό το θέμα. Επίσης (αν και είδα οτι το έκανες - εσύ ή κάποιος moderator) στην αρχική σου δημοσίευση υπάρχει ένα combo box με τίτλο "κατάσταση ενότητας" στην οποία μπορείς να επιλέξεις "εχει επιλυθεί" όταν κρίνεις οτι η ερώτηση που έκανες απαντήθηκε με ικανοποιητικό τρόπο.
    Σωτήρης Φιλιππίδης

    DotSee Web Services

    View Sotiris Filippidis's profile on LinkedIn

    DotNetNuke them!
  •  24-07-2008, 17:33 43667 σε απάντηση της 43666

    Απ: εύρεση φορμών

    cap:
    Σε όσες απαντήσεις σε βοήθησαν, κάνεις κλικ στο κουμπί "σημείωση ως απάντησης" και ο τίτλος της απάντησης γίνεται πράσινος. Ετσι μπορούν να βοηθηθούν και άλλοι χρήστες που πιθανόν να έχουν την ίδια απορία σε αυτό το θέμα. Επίσης (αν και είδα οτι το έκανες - εσύ ή κάποιος moderator) στην αρχική σου δημοσίευση υπάρχει ένα combo box με τίτλο "κατάσταση ενότητας" στην οποία μπορείς να επιλέξεις "εχει επιλυθεί" όταν κρίνεις οτι η ερώτηση που έκανες απαντήθηκε με ικανοποιητικό τρόπο.

     

    νομιζω τωρα ειναι ενταξει sorry!

     


    Yannis
  •  24-07-2008, 23:12 43673 σε απάντηση της 43667

    Απ: εύρεση φορμών

    Ειναι μια χαρά. Απλά το επαναλαμβάνουμε απο καιρό σε καιρό για να το τηρούν και οι νέοι μας φίλοι.

     


    Σωτήρης Φιλιππίδης

    DotSee Web Services

    View Sotiris Filippidis's profile on LinkedIn

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