UserForm Aufbau analog wie im Regedit.exe bzw. Regedt32.exe

  • VB.NET
  • .NET (FX) 4.5–4.8

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

    UserForm Aufbau analog wie im Regedit.exe bzw. Regedt32.exe

    Hallo,

    für eine Hostnamen-Verwaltung soll eine Verwaltungsoberfläche erstellt werden, die ähnlich, wie die Anwendung RegEdit.exe bzw. Regedt32.exe ist.

    Im Linken Treeview-Control sollen zum Einen die Hostnamen untereinander aufgelistet werden. Jedem Hosteintrag sollen fest vorgegebene Schlüssel mit deren Eigenschaften zugewiesen werden.

    Beispiel:

    SystemA
    - Hostname: SystemA
    - Typ: Windows
    - IP-Adresse: 10.6.45.2
    - AutoBoot: Ja
    ---- Wait: 5 Sekunden
    - AutoShutdown: Ja
    SystemB
    - Hostname: SystemB
    - Typ: Linux
    - IP-Adresse: 10.6.45.6
    - AutoBoot: Ja
    --- Wait: 5 Sekunden
    - AutoShutdown: Ja
    - SSH
    ---- Username: UserA
    ---- Passwort: XYZ

    Beim Anklicken einer Eigenschaft soll der Wert bearbeitet werden können.

    Frage: Kann man dieses Vorhaben mit dem Control TreeView umsetzen?

    Das Demo vom TreeViewEdit ( activevb.de/cgi-bin/tippupload/show/145/TreeviewEditor ) kommt der Zielsetzung schon sehr nahe. Bei diesem Beispiel können nur die -Knoten selbst bearbeitet werden, nicht jedoch die dazugehörigen Texte (Text entsprechen die Eigenschaften der Knoten).
    ist sicher möglich, wenn auch nicht einfach.
    An deiner Stelle würde ich mich erst aufs Datenmodell konzentrieren, und etwas arbeitsfähiges mit Datagridviews und typisiertem Dataset entwickeln.
    Wenn wolle kann man das dann umfrickeln auf eine Treeview-Lösung.
    Die ist aber schwieriger, weil Treeview kein Databinding unterstützt.

    Kennst du dich mit typDataset und Datenmodellierung aus?
    Ein komplettes Datenmodell existiert bereits.

    Bei der Entwicklung des Formulars wurde festgestellt, dass die Eingabe via Treeview für den Anwender einfacher zu handhaben ist, als wenn man mit vielen Textboxen, Checkboxen und einigen anderen Controls herum hantiert.

    Da TreeView leider kein Databinding unterstützt, wird diese Änderung als künftiges Feature in einer der nächsten Anwendungs Versionen hinten an gestellt.

    BigBen2003 schrieb:

    Bei der Entwicklung des Formulars wurde festgestellt, dass die Eingabe via Treeview für den Anwender einfacher zu handhaben ist, als wenn man mit vielen Textboxen, Checkboxen und einigen anderen Controls herum hantiert.
    Treeview nicht zu nutzen bedeutet ja nicht automatisch, dass "man mit vielen Textboxen, Checkboxen und einigen anderen Controls herum hantiert". - wie kommste da drauf?

    Ich kenne jetzt dein Datenmodell nicht, weiß nichtmal, obs selbstgebastelte Klassen sind oder typDataset-basiert.
    Evtl. könnte auch ein PropertyGrid für dich interessant sein.

    Jetzt habichmir @us4711's Link angeguckt - jo, das sieht sehr gut aus.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „ErfinderDesRades“ ()

    Hallo,

    vielen Dank für den Hinweis auf PropertyGrid. Das Control bildet genau das ab, was ich suche.

    Das Datenmodell ist recht einfach aufgebaut:

    Zum Einen gibt es eine Tabelle mit ID und Hostname (String).

    Jedem Hostnamen sollen bestimmte fest vorgegebene Eigenschaften zugewiesen werden.

    z.B.:
    AutoBoot: Yes/No
    AutoBootWaitSeconds: integer (Wartezeit in Sekunden bevor ein Boot-Vorgang ausgelöst werden soll)
    AutoShutdown: Yes/No

    Hintergrund ist folgender:
    Es sollen nach dem Starten der Anwendung eine gewisse Anzahl von Host-Systeme automatisch gebootet werden.
    Auf den entfernten Host-Systemen Windows oder Linux. Diese Information ist wichtig für das Automatische Herunterfahren eines Host-Systems. Falls es sich beim Host-System um einLinux-System handelt, wird via SSH eine Verbindung aufgebaut und ein Shutdown-Befehl abgesandt.
    Wenn es sich beim Host um ein Windows-System handelt, wird der Standard-Shutdown-Befehl von Windows verwendet.
    Sowohl für den SSh-Befehl und dem Shutdown-Befehl werden Parameter benötigt. Diese Parameter sollen vom Anwender pro Host eingetragen werden. Das gleiche gilt auch für den Windows-Befehl "Shutdown". Alle Parameter dieses Befehls sollen ebenfalls für einen Host erfasst werden können.

    Letzendlich stehen drei Tabellen zur Verfügung:
    tab_host
    =======
    ID (int32, autoincremental)
    Hostname (String)
    IPAddress (string)
    MAC (string)
    autoBoot (boolean)
    autoBootWaitSeconds (int16)
    autoShutdown (boolean)

    ID_ssh (int32) -> Verknüpfung mit tab_ssh
    ID_windows (int32) -> Verknüpfung mit tab_windows

    tab_SSH
    ========
    ID (int32, autoincremental)
    Port (int16)
    command (String)
    Username (String)
    Key (String)
    Passwort (string)

    tab_windows
    ===========
    ID (int32, autoincremental)
    Username (string)
    Passwort (string)

    In der Tabelle tab_ssh kann bei Bedarf auch ein benutzerdefinierte Befehl im Feld "command" definiert werden, der auf dem Linux-System ausgeführt wird. Das Feld Port wird zusätzlich angegeben, da manche Systeme vom Standard abweichend konfiguriert sind.

    Das Feld Hostname in der Tabelle tab_host ist nur für die Anzeige in Listenboxen, MenuStrips o.ä. da, damit die Einträge betitelt werden können.

    Die Verbindung via SSH wird realisiert mit Unterstützung von der Projekt SSH.net ( github.com/sshnet/SSH.NET )
    Für die WakeOnLan Funktion wird auf WOL2 zurückgegrifen ( sourceforge.net/projects/wol2/ ) Von diesem wird lediglich der Bestandteil zum Aufwecken eines Hostes verwendet.

    Im PropertyGrid könnte man wie folge auflisten lassen:
    + Host
    ----Felder der Tabelle tab_host
    + SSH
    ---- Felder der Tabelle tab_ssh
    + Windows
    ---- Felder der Tabelle tab_Windows

    Sobald der Anwender beispielsweise auf Host klickt, werden darunter alle Felder auf Eigenschaften aufgelistet.
    Analog sollte es auch bei den Punkten "SSH" und "Windows" passieren.

    Ob es so (oder ähnlich) umsetzbar ist, kann ich noch nicht abschätzen.

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