[VB] Vorschläge für Assistentgestaltung

schachmat

Erfahrenes Mitglied
Hallo,

ich arbeite gerade an einem Programm und denk mir das erste mal: Mensch, dass sollen ja auch Leute, die nicht unbedingt Cracks in der PC-Bedienung sind bedienen können. Also hab ich mir gedacht, ich mach ein paar nette Assistenten rein, die den Benutzer dann durch die entsprechenden Schritte führen...

Ich arbeite mit VB2005 Express.

Als Konzept hatte ich geplant, die einzelnen Schritte des Assistenten in verschiedene Panels zu machen und die dann nacheinander sichtbar zu machen (und wieder zu verstecken). Nur hat das irgendwie nicht so ganz funktioniert. Er hat zwar den Panel vom ersten Schritt (Name = "Step1") unsichtbar gemacht, aber den zweiten trotz korrektem Code nicht sichtbar. Habs auch im Debugger geschaut:

Erst ist Visible = false, dann setz ichs auf true und nach dem Sprung auf die nächste Code-Zeile ists auf einmal wieder false gewesen:confused:

Dann hab ich einfach alle sichtbar gelassen und mit .BringToFront und .SendToBack versucht. Hat auch nicht geklappt. Und jetzt hatte ich noch die Idee, dass ich einfach .Dock statt auf "Fill" auf "None" und die .Location und .Size entsprechend der Größe des Formulars setzen könnte und dann allen Steps bis auf den aktuellen einfach nen .Top Wert von 1000 zu geben, so dass er ausserhalb des Sichtbereichs ist. Hat auch vom Debugger her geklappt, aber angezeigt hat er den zweiten Step wieder nicht...

Hat da vielleicht jemand ne Idee, woran das liegen könnte oder gibt es da noch eine andere (elegante) Möglichkeit, die euch einfällt, so einen "Step-by-Step" Assistenten zu designen, die auch funktioniert.

(ach ja: .Hide und danach gleich wieder .Show hab ich auch probiert)

Wollte nur nochmal nachfragen, bevor ich das einfach so mache, dass ich alle Controls ohne Panels übereinander auf das Form klatsche und dann halt tausend Visible-Änderungen bei den Klicks auf Weiter/Zurück reinhacke:)

Wäre echt dankbar für ne Idee/Lösung/Beispiel o.ä.;)
 
Zuletzt bearbeitet:
Hallo,

Du musst aufpassen, dass das Panel der 2. Seite kein Container des Panels der 1. Seite ist und so weiter, dann kannst du beim klick auf "Weiter" einfach pnl2.BringToFront sagen - und dann sollte es funktionieren. Du musst dir natürlich überlegen wie du die "Weiter"-Schaltflächen am besten den Panels zuordnest. Am einfachsten wäre das wenn du sie mit aufs Panel setzt.

codeman
 
An deiner Stelle würd ich mit Usercontrols arbeiten in denen Du dann den Code unterbringst,
der zu den jeweiligen Aktionen gehört und Du somit auch alles sauber voneinander trennst.
Somit hast einen schön übersichtlichen Aufbau der sich dann auch noch leicht erweitern lässt. :)

Schau Dir mal diesen Aufbau eines simplen Spielmenüs an.
[thread=248735]C# Beim drücken eines Buttons Fensterinhalt ändern[/thread] [post=1296048](7. Post)[/post]
Das ist eine Variante sehr rudumentär ist.

Ich würde Dir bei einem richtigen Assistenten empfehlen, die UserControls in einem Array in der Reihenfolge unterzubringen,
in der durch sie hindurch geschaltet werden soll. Die Controls bestimmen dabei selber ob weiter geschaltet werden darf.
Erstell also ein Assistents Fenster mit einem Zurück, Weiter und einem Abbrechen Button.

Und schau Dir mal die Assistenten auf the TheCodeProject an...
 
codeman hat gesagt.:
Hallo,

Du musst aufpassen, dass das Panel der 2. Seite kein Container des Panels der 1. Seite ist und so weiter, dann kannst du beim klick auf "Weiter" einfach pnl2.BringToFront sagen - und dann sollte es funktionieren. Du musst dir natürlich überlegen wie du die "Weiter"-Schaltflächen am besten den Panels zuordnest. Am einfachsten wäre das wenn du sie mit aufs Panel setzt.

codeman

Das wirds wohl gewesen sein...:rolleyes:

Hab jetzt leider keine Zeit das auszuprobieren, da ich auch noch ein wenig Ferien habe (Bergtour), aber danach wird das bestimmt ausprobiert und dann mach ich mir auch ein eigenes Assistent User-Control;)
 
schachmat hat gesagt.:
Das wirds wohl gewesen sein...:rolleyes:

Hab jetzt leider keine Zeit das auszuprobieren, da ich auch noch ein wenig Ferien habe (Bergtour), aber danach wird das bestimmt ausprobiert und dann mach ich mir auch ein eigenes Assistent User-Control;)
Wieso einfach wenn es auch umständlich geht. :rolleyes:
Klar, klatschen wir mal alles übereinander auf unseren Assistenten und blenden es mal einfach ein und aus,
anstatt jeden Assistentsabschnitt ein einem eigenen Control zu implementieren und diese dann einfach durchzuschalten.
Dann müsstest nur noch ein myUserControl.Show() und myUserControl.Hide() aufrufen,
samt weiterer bereits genannten Vorteile...
 
Naja... das sollte sich dann irgendwie so durschalten lassen, wie beim Tab-Control (in der Entwurfsansicht). Aber da muss ich wohl noch warten, bis ich VB2005 Standart habe, da man mit Express glaub keinen Control-Designer dabei hat, oder
 
Doch, bei VB-Express gibt es einen Control-Designer; aber ich versteh im Moment nicht ganz was du meinst. Möchtest du ein eigenes Assistenten-Control entwickeln?
 
Genau das;) Das musste dann nurnoch auf dein Form ziehen und dann kannste wie beim Tab-Control eben Steps hinzufügen, durchschalten und andere Controls darauf anordnen... Kannste mir sagen, wie ich in der Express an den Control-Designer rankomme?
 
So.... das hab ich gestern auch noch gefunden. Aber wie man eine eigene Assembly daraus machen kann.... naja... dafür bräuchte man doch eine neue Projekt-Vorlage, oder?
Und als Anwendungstyp ist "Benutzersteuerelement" auch nicht verfügbar... nur "Klassenbibliothek"... Könnte man glaub aus einem Klassenbibliothek-Projekt ein Control machen, aber dann müsste man wieder alles selber Coden und da weis ich nich wie das geht bzw. bin zu faul:)

Aber wenn man in einer Standart-Edition eine neue Projektvorlage mit einem leeren User-Control erstellt und diese dann in die Express-Edition installiert, sollte das doch gehen, oder?

/Edit: Hab auch schon ein wenig mit SharpDevelop rumgespielt, aber da is das irgendwie komisch, wenn ich da von einem anderen Control ableiten will.... Hat da vielleicht noch jemand ein Tut für "Benutzersteuerelementerstellung mit SharpDevelop" irgendwo Hab nämlich keins gefunden, das mir ausreichen würde...

/Edit2^^: Hab jetzt ein Projekt aus dem "Visual Basic 2005 Kompendium" "missbraucht" und mir daraus eine Vorlage für ein neues User-Controll gebastelt.... jetzt muss ich nurnoch schauen, ob das auch so funktioniert, wie es soll ^^

/Edit3^^^^: Funktioniert alles ganz schön.... jetzt muss ich nurnoch dafür sorgen, dass man das auch schön über die Toolbox hinzufügen kann und nicht manuell im .Designer.vb Code des Forms rumpfuschen muss ^^
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück