User Control - Properties in Modul auslagern

  • VB.NET

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von Dasive.

    User Control - Properties in Modul auslagern

    Hallo,

    ich bin dabei ein User-Control zu erstellen.
    Es basiert auf einem "DataGridView" und soll schlussendlich XML-Daten beinhalten.

    Die Codedatei mit allen properties war mir etwas zu gross und ich dachte ich lagere sie in ein Modul aus und importiere dieses.
    Wenn ich das User-Control später aber verwende, ist es im Designer nicht möglich auf diese Properties zuzugreifen.

    Ausserdem scheint es als habe ich bei "WithEvents" etwas nicht richtig verstanden, es funktioniertnicht wie ich es mir vorgestellt habe.

    "Properties"-Modul (Sample)
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Imports System.ComponentModel
    2. Imports System.Windows.Forms
    3. Imports System.Drawing
    4. Module properties
    5. <Category("KeyBindings")>
    6. <Description("The bound control that works as" & Chr(34) & "input field" & Chr(34) & " for searching.")>
    7. Public WithEvents SearchTextbox As TextBox
    8. End Module


    User-Control (Sample)
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Imports System.Windows.Forms
    2. Imports System.Drawing
    3. Imports KeyBindings.properties
    4. Imports KeyBindings.grouping
    5. Public Class KeyBindings
    6. Inherits System.Windows.Forms.DataGridView
    7. Private Sub check_goto_seach_result(sender As Object, e As KeyEventArgs) Handles MyBase.KeyDown, SearchTextbox.KeyDown
    8. If e.KeyValue = 114 Then
    9. goto_search_result()
    10. End If
    11. End Sub
    12. End Class


    Fehler:
    Die Handles-Klausel erfordert eine WithEvents-Variable, die im enthaltenden Typ oder einem seiner Basistypen definiert wird.
    Zeile 10, "SearchTextbox.KeyDown"


    Wie kann ich die ausgelagerten Properties für den Designer zugänglich machen und wie kriege ich meine EventHandler zum laufen?

    Dasive schrieb:

    Die Codedatei mit allen properties war mir etwas zu gross und ich dachte ich lagere sie in ein Modul aus und importiere dieses.

    Umfug und Blüdsinn!
    -> PARTIAL Class! Damit kann man seinen Code auf verschiedene Dateien verteilen und es ist immer noch EINE Klasse. s.zB "Partial Class Form1" ... (in Form1.Designer.vb) !!!
    Danke für den super Tipp, dass kannte ich vorher nicht!

    Soll ich die "Hauptklasse" nun wie auch die "ausenstehenden" als "Partial Class" oder als "Public Class" definieren?
    Es schien mir, dass es keinen Unterschied macht.

    //EDIT
    Es macht einen Unterschied.
    Ich hatte alle Klassen eines User-Controls als "Partial" definiert und als ich es einbinden wollte bekam ich eine Fehlermeldung.
    Also sollte die "Hauptklasse" nicht als "Partial Class" definiert werden.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Dasive“ ()

    Dasive schrieb:

    VB.NET-Quellcode

    1. Chr(34)
    Mach mal so:

    VB.NET-Quellcode

    1. MessageBox.Show("""")
    2. ' bzw
    3. Dim txt = """"
    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!