Laden...

ErrorProvider prüfen ob gesetzt

Erstellt von med vor 15 Jahren Letzter Beitrag vor 15 Jahren 3.585 Views
M
med Themenstarter:in
103 Beiträge seit 2008
vor 15 Jahren
ErrorProvider prüfen ob gesetzt

Hallo zusammen

ich habe ein GUI mit mehreren Datengebundenen Textboxen, welche per Errorprovider geprüft werden (Prüfungen, welche ich mit IDataErrorInfo implementiert habe). Eine TextBox beinhaltet Werte vom Typ „decimal“. Wenn ich nun z.B. folgende Zeichenkette eingebe „100..12“ reagiert der Errorprovider mit der Meldung: „Die Eingabezeichenfolge hat das falsche Format“, wobei diese aktion automatisch, also ohne Code von mir passiert. Nun sind alle Buttons und Funktionen gesperrt, solang bis der Fehler behoben wird.

Dies ist ja eigentlich okay, allerdings ist mir nicht klar, wo/wer diese Prüfung macht. Denn ich habe eine Funktion eingebaut, bei welcher jeweils mit der ESC-Taste immer zurück in den Vorherigen Dialog gesprungen werden kann. Ist dieser Errorprovider nun gesetzt funktioniert nichts mehr bis auf diese ESC-Funktion. Danach allerdings ist das Programm in einem Zustand in welchem sich nicht weiterarbeiten lässt (eingefroren).

Um auch die ESC-Funktion zu unterbinden müsste ich allerdings wissen ob der Errorprovider gesetzt ist. Doch da blicke ich noch nicht durch. Hat da jemand einen Hint für mich?

Besten Dank 🙂
med

E
55 Beiträge seit 2008
vor 15 Jahren

Wieso verwendest du anstatt des ErrorProviders + TextBox nicht einfach eine MaskedTextBox? Dammit kannst du auch verhindern, das was anderes, als decimal eingegeben wird

M
med Themenstarter:in
103 Beiträge seit 2008
vor 15 Jahren

äähhm.... gute Frage, sehr gute Frage... 🙂 ich muss mir das anschauen.

Besten Dank!
med

2.187 Beiträge seit 2005
vor 15 Jahren

Hallo med,

Um die Originalfrage mal zu beantworten:
Der Errorprovider müsste in der Controls-Auflistung enthalten sein und wenn man einen Errorprovider gefunen hat, muss man seine DataSource noch prüfen, ob diese der DataSource entspricht, für die man das "gesetzt sein" des ErrorProviders ermitteln will.

Gruß
Juy Juka

M
med Themenstarter:in
103 Beiträge seit 2008
vor 15 Jahren

Hallo

@EL_Broto:
Ich habe mir das angeschaut, finde die Masked-Texbox jedoch ziemlich umständlich zur Eingabe. Z.B. für immer gleichlange Telefonnummern ist dies ok, doch für allgemeine Float Zahlen verschiedener Länge hab ich keine entsprechende Maskenmöglichkeit gefunden.

@JuyJuka:
Was meinst Du mit "müsste in der Controls-Auflistung enthalten sein"? Momentan sind diese nicht in den Controls aufgelistet und wenn ich versuche sie manuell hinzuzufügen (this.Controls.Add(ErrProv)😉 reklamiert der Kompiler von wegen ungültigem Argument. Übrigens, den Errorprovider habe ich nicht per per Drag und Drop auf das Form gezogen sonder dieser wird dynamisch im Code erstellt.


//add ErrorProvider
         ErrProv = new ErrorProvider();
         ErrProv.ContainerControl = this;
         ErrProv.DataSource = this.secBindingSource;
         ErrProv.BlinkStyle = ErrorBlinkStyle.NeverBlink;
         //this.Controls.Add(ErrProv);

Besten Dank
med

2.187 Beiträge seit 2005
vor 15 Jahren

Hallo med,

Warum hast du den ErrorProvider dynamisch erzeugt? Das macht nur sinn, wenn die BindingSource auch dynamisch ist (was sie bei dir scheinbar nicht ist).

Die Controls-Collection war wohl falsch, versuchs mal mit der Container.Components (entweder von der Form oder vom Control).

Gruß
Juy Juka

M
med Themenstarter:in
103 Beiträge seit 2008
vor 15 Jahren

Hallo JuyJuka

Die BindingSource wird auch dynamisch erstellt (das this. ist da zuviel).

>>versuchs mal mit der Container.Components (entweder von der Form oder vom Control).
?? Weiss nicht genau wie ich dies anwenden soll. Wie ist das gemeint "von der form oder vom Control"? Und muss ich den ErrorProvider beim erstellen da zur Collection hinzufügen?

Besten Dank
med

2.187 Beiträge seit 2005
vor 15 Jahren

Hallo med,

Du brauchst auf jeden Fall den ErrorProvider in irgend einer Collection.
Da kannst du eine eigene Collection anlegen, oder die vorhandenen benuzten.
Es ist eigentlich egal, welche du verwendest.

Gruß
Juy Juka