Announcement

Collapse
No announcement yet.

Formular dynamisch aufrufen - Formalarname als Parameter

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Formular dynamisch aufrufen - Formalarname als Parameter

    Hallo,

    Ich programmiere unter vb2008. In meiner Anwendung möchte ich dynamisch Formulare anzeigen. D.h., ich ermittle den Namen des aufzurufenden Formulars aus einer Tabelle. Nun soll das Formular gestartet werden. Wie definiere ich das?

    [highlight=vbnet]
    Dim dr As DbDataReader
    Dim fname
    cmd.Connection = con
    con.Open()
    cmd.CommandText = "select Formname from tblpruefprotokolle where Lfd_Nr=" & Me.rep_id.Text
    dr = cmd.ExecuteReader
    dr.Read()
    fname = dr.Item("Formname")
    dr.Close()
    con.close

    dim f as new form
    f.name=fname
    f.show()
    [/highlight]

    Aber so funktioniert das leider nicht. -> Es kommt ein leeres ('neus') Fenster - aber nicht mein gewünschtes Formular
    Mit der Bitte um Unterstützung, vielen Dank
    Zuletzt editiert von gfoidl; 20.05.2010, 20:22. Reason: Code Formatier-Tags eingefügt und ins VB.net-Forum verschoben

  • #2
    Hallo und willkommen im Forum,

    zuerst 2 Anmerkungen als Moderator:
    1. wenn VB.net verwendet wird dann Poste bitte im VB.net-Forum
    2. Formatiere bitte den Code so wie in Hinweise und Formatierung von VB.net-Code beschrieben


    Beide Punkte sind nur in deinem Interesse - dir soll ja geholfen werden


    Nun zum Problem:

    Eine Instanz der Form kann mittels Reflektion erstellt werden falls nur der Name vorhanden ist. Dazu kann beispielsweise folgende Methode verwendet werden:
    [highlight=vbnet]
    Private Shared Function GetForm(ByVal name As String) As Form
    * * Dim ns As String = GetType(Program).Namespace
    * * name = ns & "." & name
    * * Dim formType As Type = Type.GetType(name)
    * * Dim form As Object = Activator.CreateInstance(formType)
    * * Return TryCast(form, Form)
    End Function
    [/highlight]
    Hier wird allerdings angenommen dass der Name des Formulars den Namespace nicht enthält, daher wird dieser im Code "dazugeschrieben". Somit könnte in der Datenbank auch der vollqualifizierte Name gespeichert werden um die Arbeit in der Methode zu erleichtern.


    mfG Gü
    "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

    Comment


    • #3
      ...und wie man etwas geschickter auf Datenbanken/Tabellen zugreift: MyCSharp.de - Parameter von SQL Befehlen
      Gruss
      Cheat-Sheets for Developers Programming Quotes

      Comment


      • #4
        Gibts nicht auch ExecuteScalar wenn nur ein Ergebnis zurückkommen sollte?

        Comment


        • #5
          Hallo gfoidl,

          erstmal vielen Dank für Deine Hinweise bzgl. Forumkultur. Das werde ich nun brav berücksichtigen.
          Zu meinem Problem:
          Wie baue ich dann diese Funktion sinnvoll in meinen Kontext?

          Vielen Dank vorab

          Comment


          • #6
            Hallo alle zusammen,

            also ich habe die Funktion eingebunden und nun auch den Aufruf korrekt integriert. Vielen Dank für die Unterstützung.
            Bis bald..-

            dbfreak

            Comment

            Working...
            X