Von Public Prozedur in Modul Steuerelement in Form füllen [geht nicht, kp weshalb]

  • VB.NET

Es gibt 14 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Von Public Prozedur in Modul Steuerelement in Form füllen [geht nicht, kp weshalb]

    Nabend VB-P Forum,

    ich möchte mit einer Prozedur das Steuerelement einer Form füllen, wenn ich Sie aufrufe bleibt das aber leer.

    Das Modul:

    VB.NET-Quellcode

    1. Module Module1
    2. Public Sub grdSpalten1(ByVal msk As String)
    3. ' ----------------------------------------------------------------------------------------------------------------------------------------
    4. formf.ComboBox1.Items.Add("444")
    5. Select Case msk
    6. Case "MS_FEE"
    7. With formf.dg_gef
    8. .DataSource = Nothing
    9. .Refresh()
    10. .Rows.Clear()
    11. .ColumnCount = 2
    12. .Columns(0).Name = "1"
    13. .Columns(0).Width = 141
    14. .Columns(1).Name = "2"
    15. .Columns(1).Width = 142
    16. .RowHeadersVisible = False
    17. End With
    18. End Select
    19. End Sub


    Der Aufruf:

    VB.NET-Quellcode

    1. grdSpalten1("MS_FEE")


    (Habe den Programmtext etwas vereinfach, aber das geht auch nicht in der vereinfachten Form)
    Probiers ma so:

    VB.NET-Quellcode

    1. Public Sub grdSpalten1(ByVal formf As MyForm, ByVal msk As String)
    2. End Sub
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    RodFromGermany schrieb:

    Public Sub grdSpalten1(ByVal formf As MyForm, ByVal msk As String)
    End Sub

    RodFromGermany schrieb:

    Probiers ma so:

    RodFromGermany schrieb:

    Visual Basic Quellcode




    1
    2

    RodFromGermany schrieb:

    Public Sub grdSpalten1(ByVal formf As MyForm, ByVal msk As String)
    End Sub

    Nein, das geht nicht, er schlägt Form als Handle vor und wenn ich Form.xxx ansprechen will meldet er: Fehler 12 "ComboBox1" ist kein Member von "System.Windows.Forms.Form". C:\Users\26\WindowsApplication2 - datatable\Module1.vb 8 9 Auftragsbaum
    Dann mach aus dem Modul eine Klasse, von der Du mit New erst eine Instanz anlegen musst.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Okay danke euch beiden, leider funktionierte nur diese Methode:

    VB.NET-Quellcode

    1. Public Sub grdSpalten1(ByVal ComboBox1 As ComboBox, ByVal msk As String)


    Das ganze Form aus dem Modul zu steuern scheint nicht zu funktionieren, werde eine Klasse erstellen müssen.

    VB.NET-Quellcode

    1. Public Function grdSpalten1(ByVal ComboBox1 As ComboBox) As String
    2. 'deine Code
    3. '....
    4. End Function


    in Form Code

    VB.NET-Quellcode

    1. if grdSpalten (DEIN_COMBOBOX) = "BLUB" Then
    2. 'deine code
    3. End If


    oder verstehe ich dich falsch ?
    Ich glaube, das du mich falsch verstanden hast:

    1. Ich möchte von irgendwo im Programm (Form, Module) eine Prozedur in einem Modul aufrufen

    2. Diese Prozedur in dem Modul wertet die Übergebenen Variablen aus (Int, Strg)

    3. Die Prozedur schreibt das Ergebnis in ein Steuerelement in einer Form im Programm, welches geöffnet ist.
    Wenn ich das mache und dort folgende Funktion reinschreibe verändert sich das Steuerelement auch nicht:

    VB.NET-Quellcode

    1. Public Function ad() As String
    2. formf.ComboBox1.Items.Add("444")
    3. MsgBox("")
    4. Return 0
    5. End Function


    Ich möchte ja nich für jedes Steuerelement ne neue Klasse oder Funktion sondern die Ausgewerteten Daten in die Steuerelemente schreiben.

    --> Wenn ich so an Jede Klasse für eine Spalte, welche ich nicht mit SQL erzeugen kann ein Array an übergebe wird das Programm bei 2000-3000 Datensätzen wohl sehr langsam.
    !! Achtung ""

    Was ich im ersten Post beschrieben hatte funktioniert sehrwohl, nur nicht wenn man das Formular folgenderweise aufruft:

    VB.NET-Quellcode

    1. Dim frm As New formf
    2. frm.TopLevel = False
    3. frm.Visible = True
    4. PNL_Hintergrund.Controls.Add(frm)
    5. frm.Location = New System.Drawing.Point(0, 0)


    Gibt es eine alternative zu dieser Form des Einbettens un ein Hauptformular, ohne das sich alles endlos aufbläht?