vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Schützen Sie Ihre Software vor Software-Piraterie - mit sevLock 1.0 DLL!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Re: Auf einem Formular - Dynamisch erzeugte UserControls setzen 
Autor: haesaet
Datum: 15.10.10 11:28

Hi,

danke für die fixe Antwort.

Ja das mit dem Code gefiel mir auch nicht wirklich.

ich werd mal schauen wie ich deine Lösung realisiert bekomme.

Danke fürs erste
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Auf einem Formular - Dynamisch erzeugte UserControls setzen 
Autor: jasmina
Datum: 01.10.10 11:46

Hallo,
ich arbeite mit VB2008.
In meinem Projekt befindet sich ein Formular.
In diesem Projekt befindet sich ein weiteres Projekt - ein Usercontrol (Projektname: MenueLeiste)
(Usercontrolname: usrLeiste)

Auf das UserControl werden dynamisch Group-Boxen und darin befindliche Textboxen aufgebaut.
Bei einer bestimmten Gesamtbreite der Group-Boxen soll ein dynamisch ein weiteres UserControl aufgebaut werden.

Die UserControls sollen (können ja mehr als eins sein) Dynamisch auf das Formular gestellt werden.

Meine Idee:
Also im Usercontrol benutze ich eine Dynamisch Erweiterbare Tabelle z.B usrContTab() as usercontrol.

Dim X As Integer = usrContTab.Count - 1
'Dynamische Erweiterung der UserControls
If usrContTab(0) Is Nothing Then ReDim usrContTab(0) Else X = X + 1 : ReDim Preserve usrContTab(X)

usrContTab(X) = New Usercontrol
With usrContTab(X)
.Parent = ?????

Was soll ich als Parent eintragen??
oder wie ist das zu machen?

darauf stelle ich die GroupBoxen je nach Weite der GroupBoxen, muss ich wenn die Weite des userContTab(0) erfüllt ist, dynamisch ein weiteres UserControl erzeugen.

2.Problem
Wie definiere ich im Hauptformular, die dynamisch erzeugten UserControls - bzw. wie erzeuge ich eine
Dynamik, bei der ich ein oder mehrere Usercontrols auf dem Formular?

Wird im Hauptformular ein Dynamisches Array festgelegt, indem ich aus einem Property die Anzahl der zu erstellten UserControls übergeben wird - und wie macht man das?

Danke
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Auf einem Formular - Dynamisch erzeugte UserControls setzen 
Autor: ModeratorDaveS (Moderator)
Datum: 06.10.10 12:44

Ich schlage vor du verwendest List(Of ) statt Arrays und der furchtbaren ReDim Anweisung. Und sonst verstehe ich eher nur Bahnhof, sorry.

________
Alle Angaben ohne Gewähr. Keine Haftung für Vorschläge, Tipps oder sonstige Hilfe, falls es schiefgeht, nur Zeit verschwendet oder man sonst nicht zufrieden ist

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Auf einem Formular - Dynamisch erzeugte UserControls setzen 
Autor: haesaet
Datum: 15.10.10 10:29

Hallo,

ich verstehe nicht ganz was du da beschreibst, aber ich vermute du möchtest eine Tabelle dynamisch mit Controls befüllen.

Mit diesem Thema beschäftige ich mich im Moment.

Ich möchte mir einen Formulareditor erstellen mit dem ich mir ein Formular basteln kann.
Dieser Editor soll neue Formulare voll flexibel erstellen und bereits bestehende Formulare laden und bearbeiten können.

Frage(txtbox)|Antwortanzahl(combbox)|Grpbox mit chkboxen|chkbox ob Frage Aktiv

Ich habe mir ein paar Datensätze erstellt um das laden einer Tabelle zu testen.

Ich lade die Daten aus 2 Tabellem ,TbFrage und tbAntworten, und lese diese mit dem Datareader aus.

Das laden und dynamische erzeugen der Tabelle funktioniert einwandfrei aber ich komme jetzt nicht weiter.

Ich möchte z.B. einen Fragenkatalog mit dieser Methode erstellen, aber:

Wie greife ich beim speichern auf die jeweiligen dynamisch erstellten Controls mit den dazugehörigen values zu?

Für das erzeugen von chkboxen in der Groupbox abhängig der Mengenauswahl aus der combobox benötige ich auch noch eine Lösung.
Ich kann zwar auf die Combobox und Value über den EventHandler zugreifen. Aber wie sag ich dem Control wo er die neuen Contrals generieren soll.

Code im 2. Post

Puh, ich hoffe ihr versteht was ich meine....Ich bin noch ziemlich neu in der Materie und unsicher mit der Wortwahl.

Und Jasmina, vielleicht bringt dich ja mein Ansatz irgendwie weiter
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Auf einem Formular - Dynamisch erzeugte UserControls setzen 
Autor: haesaet
Datum: 15.10.10 10:33

Dim conString As String
Dim cmd As New MySqlCommand
Dim conn As New MySql.Data.MySqlClient.MySqlConnection
Dim objDaten As MySqlDataReader
conString = "server=localhost;" _
                & "uid=xxxxxx;" _
                & "pwd=xxxxx;" _
                & "database=xxxxx;"
conn.ConnectionString = conString
 
Try
            conn.Open()
            cmd.Connection = conn
 
            cmd.CommandText = "select * from tbFragen as f left join" & _
              "tbantworten as a on (f.FrageID = a.FrageID);"
            objDaten = cmd.ExecuteReader()
            objDaten.Read()
 
Try
                If objDaten.HasRows Then
 
                    ' Feststellen und speichern der Zeilenanzahl
                    Dim y = Me.Tabel1.RowCount - 3
 
                    'Spalte wo die Controls mit Antworten enstehen
                    Dim c = 2
 
                    Do
                        Dim FrageID1 = objDaten.Item("FrageID")
 
                        If Not FrageId = FrageID1 Then
 
                            'Spalte in die eine Textbox  eingefügt wird
                            c = 2
 
                            'Neue Zeile erstellen
                            y += 1
 
                            'Erzeugen eines Objektes und speichern in eine 
                            ' Variable
                            Dim tb1 = New Windows.Forms.TextBox()
 
                            'Einfügen des Objektes in  in Spalte x und Zeile y
 
                            Tabel1.Controls.Add(tb1, 0, y)
 
 
                            tb1.Text = objDaten.Item("Frage")
                            tb1.Width = 400
 
                            Dim optA = objDaten.Item("AntwortAnzahl")
 
                            Dim comb1 = New Windows.Forms.ComboBox()
                            Tabel1.Controls.Add(comb1, 1, y)
 
                  ' Ich lasse nur max 8 Antworten zu..Mehr ergeben sich nicht 
                  ' für meinen Bedarf
                            For i = 0 To 8
                                comb1.Items.Add(i)
                            Next
 
                            comb1.SelectedItem = optA
                            'erstellt einen EventHandler für die Combobox
                            AddHandler comb1.SelectedIndexChanged, AddressOf _
                              DynamicClick
 
                            'Fragen die keine vorgegebenen Antworten haben 
                            ' bekommen eine Textbox generiert
                            If optA = 0 Then
                                Dim Textbox = New Windows.Forms.TextBox()
                                Tabel1.Controls.Add(Textbox, c, y)
                                Tabel1.SetColumnSpan(Textbox, 4)
                                Textbox.Width = 500
                            Else
                                Dim Textbox = New Windows.Forms.TextBox()
                                Tabel1.Controls.Add(Textbox, c, y)
                                If objDaten.Item("Antwort") Is DBNull.Value Then
                                    Textbox.Text = ""
                                Else
                                    Textbox.Text = objDaten.Item("Antwort")
                                End If
 
                            End If
 
                            Dim cb As New Windows.Forms.CheckBox()
                            Tabel1.Controls.Add(cb, Tabel1.ColumnCount, y)
 
                            'Setze Wert von FrageId1 auf FrageId
                            FrageId = FrageID1
                        Else
                            c += 1
                            'Abfrage ob Spalte größer oder gleich 5, wenn ja 
                            ' neue Zeile erstellen
                            If c >= Tabel1.ColumnCount - 1 Then
                                y += 1
                                c = 2
                            End If
 
                            Dim tba = New Windows.Forms.TextBox()
                            Tabel1.Controls.Add(tba, c, y)
 
                            If objDaten.Item("Antwort") Is DBNull.Value Then
                                tba.Text = ""
                            Else
                                tba.Text = objDaten.Item("Antwort")
                            End If
                        End If
 
                    Loop Until objDaten.Read() = False
                Else
                    MsgBox("No rows returned.")
                End If
 
            Catch ex As Exception
                MsgBox(ex.Message)
            End Try
            objDaten.Close()
 
        Catch ex As MySql.Data.MySqlClient.MySqlException
            MessageBox.Show(ex.Message)
        End Try
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Auf einem Formular - Dynamisch erzeugte UserControls setzen 
Autor: ModeratorFZelle (Moderator)
Datum: 15.10.10 11:13

1. Alles in eine Funktion zu packen nennt sich Spagettiecode, und sowas lässt sich nicht warten.
Als Faustformel gilt, mehr als ca 40 Zeilen ( 25 bei anderen nicht so geschwätzigen sprachen ) sollte man nicht in eienr Funktion haben.

2. Das Aufbewaren der Daten in den Controls ist der falsche weg, es gibt da extra DataBinding für.

3. Und das hilft dir dann auch die frage des Datenholens aus den Controls zu erledigen, nämlich man macht es nicht.

4. Wenn du dynamisch etwas aufbaust, merke es dir selber in z.b. Dictionary(of)

5. Sinnvoller als da jetzt wohlmöglich hunderte von Zeilen zu erzeugen ist es Links ein Grid/ListView anzuzeigen und rechte daneben dann die Details in Text/Check/Radio was auch immer.

Private FragenDataTable as DataTable
Private FragenBinder as New BindingSource
..
Dim adapter as new MySqlDataAdapter("select * from tbFragen as f left join" & _
              "tbantworten as a on (f.FrageID = a.FrageID);", connectionString )
FragenDataTable = new DataTable("Fragen")
adapter.Fill(FragenDataTable)
 
FragenBinder.DataSource = FragenDataTable
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Auf einem Formular - Dynamisch erzeugte UserControls setzen 
Autor: jasmina
Datum: 15.10.10 15:39

Hallo,

meine Frage ist:
In einem Formular trifft der Benutzer eine Auswahl welche Ausgaben in der MenüLeiste angezeigt werden sollen.

In einer DLL benutze ein UserControl um die die Auswahlfelder aneinandergereiht anzeigen zu können.
Die Auswahlfelder haben unterschiedliche Breite der Ausgabefelder. Deshalb dürfen nur eine bestimmte Anzahl der Auswahlfelder auf der Menüleiste zu sehen sein.
Ist die Menüleiste voll (Breite erreicht) -
soll dynamisch ein weiteres UserControl mit den nächsten Auswahlfeldern bestückt werden.

Beim Programmaufruf werden als erstes die UserControl mit den UserControls erzeugt, und anschließend im Programm als Menüleiste untereinander angezeigt.

Wie kann ich die UserControls dynamisch erzeugen und dann im Programm einbinden?

Danke
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel