Autor Beitrag
lightsaver
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 24


C# (VS 2008 Prof.)
BeitragVerfasst: Di 15.04.08 17:03 
Hi,

mir ist gestern ein seltsames Problem begegnet und ich wollte mal wissen, ob mir das jemand erklären kann:

Ich habe ein Formular mit mehreren Feldern, hauptsächlich Textboxen, aber auch eine Richtextbox.
Alle Felder sind an ein Dataset gebunden. Ich habe nun für alle Felder als DataSourceUpdateMode onPropertyChanged eingestellt, was für die Textboxen auch funktioniert hat, bei der rtb allerdings ist der Cursor immer vor dem ersten angezeigten Zeichen geblieben, so dass ich im prinzip rückwärts geschrieben habe. Dies war erst behoben, als ich dort auf onValidated umgestellt habe.

Wieso verhalten sich die TB und die RTB da so verschieden und ist das vielleicht auch nur eine Einstellungssache?

Wäre mal sehr interessant zu erfahren


Moderiert von user profile iconChristian S.: Topic aus C# - Die Sprache verschoben am Di 15.04.2008 um 17:05
maro158
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 35



BeitragVerfasst: Fr 18.04.08 11:31 
Interessant. Ich kann aber beim besten Willen nicht nachvollziehen, was Deiner RichtTextBox widerfährt. Kannst Du bitte etwas detaillierter beschreiben, was vor sich geht?

Die Theorie: Wenn Du in der RichTextBox einen neuen Buchstaben eintippst, wird das Ereignis OnTextChanged ausgelöst. Wenn Du nun für Dein datengebundenes Steuerelement DataSourceUpdateMode.OnPropertyChanged angegeben hast, wird auch dieses Ereignis ausgelöst (da sich ja die Text-Property geändert hat) und die geänderten Daten werden dabei in die darunterliegende Datenquelle geschrieben (parsing). Mit anderen Worten: Steuerelement und Datenquelle werden nach jeder Änderung synchronisiert. Gibst du für das Steuerelement jedoch DataSourceUpdateMode.OnValidation an, werden die Daten aus dem Steuerelement erst nach der Validierung in die Datenquelle und nicht beim Eintippen eines Buchstabens zurückgeschrieben (d.h. nach OnLeave->OnValidating->OnValidated). Ich kann mir nur vorstellen, dass das inkonsistente Verhalten der beiden Steuerelemente, die Du beschreibst, während der Phase der Formatierung stattfindet, d.h beim (erneuten) Beladen der Steuerelemente mit Daten.