Controls für Eingabe sperren

MasterDS

Erfahrenes Mitglied
[VB.NET]

Hi!

Weiss jemand eine Möglichkeit, wie man Controls für die Bearbeitung sperren kann und zwar ohne folgende:

Code:
control.enabled = False

Ich möchte nämlich das die Optik des Controls gleich bleibt und es nicht "schattiert" dargestellt wird. Die Benutzer sollen nur keine Änderungen vornehmen können, solange Sie nicht auf "Bearbeiten" geklickt wird.

Meine Frage betrifft folgende Controls: Textbox, Button, DateTimePicker, ComboBox.
Die Controls befinden sich alle in einer Groupbox.

Jemand eine Idee?
 
Es hat ja einen Sinn, warum inaktive Symbole dunkler, schattierter dargestellt sind als aktive Schaltflächen.
Als DAU würde ich 10 mal auf "Bearbeiten" klicken, mich wundern warum nichts funktioniert, das Programm löschen und was anderes machen und mich dann beschweren.

Der Sinn und Zweck ist mir nicht ganz so geläufig..
Aber du kannst doch die Objekte einfach ausblenden und erst einblenden, wenn man sie verwenden soll.. dann könntest du auch andere Buttons gleichzeitig verschwinden lassen..

Code:
cmdBeispielbuttonBearbeiten.show = true
cmdBeispielbuttonOeffnen.show = false
 
Dein Argument macht Sinn, stimmt. Mein Problem ist aber folgendes:

Ich zeige auf einer Form mit den besagten Controls Datenbankinhalte an. Im Grunde soll man aber zuerst nur "sehen" können. Sonst müsste ich ja bei jedem Control hinterlegen, dass beispielsweise eine Speichern-Abfrage kommt. Ich möchte also das die Daten erst geändert werden können wenn sie wirklich bearbeitet werden sollen. Wenn die Controls natürlich schattiert dargestellt werden, erkennt man nicht mehr wirklich etwas vom Inhalt.
Mal konkreter: Auf der Form werden mittels Labels (zur Beschriftung) und Textboxen (Inhalt) Kundendaten angezeigt. Ebenfalls werden Produktbezogene Daten auf ähnliche weise angezeigt. Ich möchte aber nicht, dass bei einem gespeicherten Produkt Informationen geändert werden. Sonst müsste sich auch der angezeigte Preis ändern und die (unnütze) Berechnung möchte ich mir an dieser Stelle sparen...

Ideen?
 
Eine Alternative für das TextBox-Control wäre die ReadOnly-Eigenschaft auf True zu setzen. Auch hier hast du eine Schattierung, allerdings kann man den Text noch einwandfrei lesen.

Gruß
PhoenixLoe
 
Stimmt. TextBoxen haben noch die ReadOnly Eigenschaft. Allerdings hilft mit das bei den anderen Controls nicht weiter.

Ich werd mir wohl was anderes einfallen lassen müssen.
 
Wenn die Controls natürlich schattiert dargestellt werden, erkennt man nicht mehr wirklich etwas vom Inhalt.
Dann könnte vieles was gelesen wird, nicht gelesen werden können. Klingt kompliziert, ist aber einfach.

Du könntest maximal eine Ableitung machen und das Zeichnen bestimmter Teile der Steuerelemente selbst übernehmen. Das ist jedoch recht viel Aufwand, wenn es sich gleich um einige Steuerelemente handelt und die komplexer sind, als die TextBox :)

Eine andere Möglichkeit besteht eventuell darin, auf fertige Control-Libraries zurück zu greifen, da diese eventuell entsprechende Mechanismen beinhalten. Diese kosten dann natürlich entsprechend.
 
Ja ich habe es fast befürchtet... ;-)

Ableitung scheint mir auch zu aufwändig und zusätzliche Controls kaufen will ich vorerst vermeiden. Naja, ich werd einfach so eine Art "Wollen Sie die Änderungen Speichern?" Abfrage einbauen.

Vielen Dank trotzdem für eure Hilfe!

;-)
 
Zurück