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

 

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

Άνοιγμα φόρμας από combo box.

Îåêßíçóå áðü ôï ìÝëïò Αλέξανδρος Δημητρίου. Τελευταία δημοσίευση από το μέλος Αλέξανδρος Δημητρίου στις 27-06-2008, 19:32. Υπάρχουν 8 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  25-06-2008, 21:26 43081

    Άνοιγμα φόρμας από combo box.

    Παιδιά καλησπέρα! Έχω το εξής πρόβλημα.

    Έχω στην εφαρμογή μου ένα combo box το οποίο περιέχει τα ονόματα των φορμών της εφαρμογής μου.έχω και ένα button το οποίο όταν το πατάω θέλω να ανοιγει την φόρμα που γράφει το combo box.

    πως μπορεί αυτο να γίνει?

     

     

    Σας ευχαριστώ πολύ!

     


    Αυτοί που ζουν γενναίοι είναι ενάρετοι,κάνουν ένδοξες πράξεις και πέθαινουν αιώνια ξακουστοί....
    Μ.Αλέξανδρος...IV Crusade...
  •  26-06-2008, 10:06 43091 σε απάντηση της 43081

    Απ: Άνοιγμα φόρμας από combo box.

    Μπορείς είτε κάνοντας κλήση της φόρμας που θες άμεσα (εχεις reference sto project που περιέχει την επιθυμητή φόρμα)


     px
    formX f = new formX(...);

     είτε μέσω reflection

    Type controlType = Type.GetType(className); //(full class Name include namespace )
    ConstructorInfo controlConstructor = controlType.GetConstructor(); //controlType.GetConstructor(new Type[] { typeof(inputparameter1),...typeof(inputparametern) } σε περίπτωση constructor με παραμέτρους εισόδου

    controlConstructor.Invoke(); //controlConstructor.Invoke(new object[] {parameter1value,...,parameterNvalue })


    και μετα καλείς τη μέθοδο Show/ShowDialog
  •  26-06-2008, 11:20 43096 σε απάντηση της 43081

    Απ: Άνοιγμα φόρμας από combo box.

    Σε ευχαριστώ για το χρόνο σου αλλά μήπως θα μπορούσες να βοηθήσεις λίγο παραπάνω γιατί δεν μπορώ να το υλοποιήσω...

     

     

    Σε ευχαριστώ πάρα πολύ.


    Αυτοί που ζουν γενναίοι είναι ενάρετοι,κάνουν ένδοξες πράξεις και πέθαινουν αιώνια ξακουστοί....
    Μ.Αλέξανδρος...IV Crusade...
  •  26-06-2008, 17:14 43115 σε απάντηση της 43091

    Απ: Άνοιγμα φόρμας από combo box.

    private void Form1_Load(object sender, EventArgs e)
     {
     this.comboBox1.Items.Add("Sample.Form2,Sample"); //fullNamespace.ClassName , AssemblyName
    }



     private void button2_Click(object sender, EventArgs e) {

     Type controlType = Type.GetType(this.comboBox1.SelectedItem.ToString()); //(get type)
     System.Reflection.ConstructorInfo controlConstructor = controlType.GetConstructor(new Type[] { });
    object o = controlConstructor.Invoke(new object[] {});
     ((Form)o).ShowDialog();//η ο Object για να το καταλάβεις καλύτερα ελπίζω..διαβασε σχετικα με reflection }
  •  26-06-2008, 17:31 43116 σε απάντηση της 43115

    Απ: Άνοιγμα φόρμας από combo box.

    Βλακεία μου που δεν στο ανέφερα...Γράφω με VB..Αλλάζει κάτι?


    Αυτοί που ζουν γενναίοι είναι ενάρετοι,κάνουν ένδοξες πράξεις και πέθαινουν αιώνια ξακουστοί....
    Μ.Αλέξανδρος...IV Crusade...
  •  27-06-2008, 10:01 43130 σε απάντηση της 43116

    Απ: Άνοιγμα φόρμας από combo box.

    Αν αναφέρεσαι σε VB.net απλά τρέξε έναν code converter (θα βρείς πολλούς free). Αν αναφέρεσαι σε VB6 και παλαιότερα όχι

    Το reflection είναι part tou framework (1.0 kai meta). Στο sample που σου έστειλα ο τύπος της φόρμας είναι hardcoded στο combobox. Μπορείς όμως μέσω reflection στο runtime να βρείς όλες τις φόρμες που περιέχει το assembly και να γεμίσεις έτσι το combobox με τις φόρμες.

     

     

  •  27-06-2008, 18:30 43136 σε απάντηση της 43081

    Απ: Άνοιγμα φόρμας από combo box.

    Για δες αν αυτό σε βοηθάει,

     

    1) Φτιάξε ένα windows form application σε vb .

    2) Πρόσθεσε ενα button και ένα combox στην πρωτη φόρμα

    3) Πρόσθεσε 3 new forms(form2,form3,form4) στο project. για όλα τα forms και τα controls αφησε τα default names

    4) Στην πρώτη φόρμα form1(αυτη εχει το Button Και το combobox) στο Onload event γραψε τον παρακατω κωδικα

    Dim strForms() As String = {"Form2", "Form3", "Form4"}

    Me.ComboBox1.Items.AddRange(strForms)

    5) Στο Button1 click event βάλε αυτό τον κώδικα

     

    Dim projName As String = My.Application.Info.AssemblyName

    Dim frmName As String = Me.ComboBox1.Text

    Dim frmFullName As String = projName + "." + frmName

    If System.Type.GetType(frmFullName) IsNot Nothing Then

    Dim frm As Form = Activator.CreateInstance(System.Type.GetType(frmFullName))

    frm.Show()

    End If

     

    6) τρέξε την εφαρμογή.ελπιζω να ειναι αυτο που θελεις


    Νικόλαος Καντζέλης
    BSc, MSc, MCAS, MCPD, MCITP, MCTS,MCP, MCT
    http://www.nksolutions.gr
    http://dotnetstories.wordpress.com
    http://weblogs.asp.net/dotnetstories
    http://forum.dotnetnuke.gr
  •  27-06-2008, 19:13 43138 σε απάντηση της 43136

    Απ: Άνοιγμα φόρμας από combo box.

    Φίλε μου εάν αντικαταστήσω το frmfullname με το ονομαεφαρμογης.ονομαφορμας δηλαδή με hardcode παίζει...όσο βάζω μεταβλητή δεν μπαίνει στη συνθήκη...

    Δεν ξέρω γιατί

    όταν κάνω messagebox.show(frmfullname) βγάζει ακριβώς αυτό που του βάζω με hardcode όταν παίζει...

     

    Αν μπορείς βοήθησε να ξέρεις πως αυτό ήθελα και σε ευχαριστώ παρα πολύ..


    Αυτοί που ζουν γενναίοι είναι ενάρετοι,κάνουν ένδοξες πράξεις και πέθαινουν αιώνια ξακουστοί....
    Μ.Αλέξανδρος...IV Crusade...
  •  27-06-2008, 19:32 43139 σε απάντηση της 43138

    Απ: Άνοιγμα φόρμας από combo box.

    Φίλε σε ευχαριστώ το βρήκα.Παίζουν ρόλο μικρά κεφαλαία...Πρέπει να είναι ακριβώς ίδιο με το όνομα της φόρμας όσον αφορα τα κεφαλαία μικρά γράμματα...

    Σε ευχαριστώ παρα πολύ ...Παίζει άψογα

     


    Αυτοί που ζουν γενναίοι είναι ενάρετοι,κάνουν ένδοξες πράξεις και πέθαινουν αιώνια ξακουστοί....
    Μ.Αλέξανδρος...IV Crusade...
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems