Frage

Ich habe Validierungsregeln auf einem textBox in meinem WinForm umgesetzt und es funktioniert gut. Allerdings prüft sie die Validierung nur, wenn ich Registerkarte aus dem Feld. Ich möchte es so schnell zu überprüfen, wie alles in der Box eingegeben und jedes Mal wenn sich der Inhalt ändert. Auch ich möchte es Validierung, sobald die WinForm öffnet zu überprüfen.

Ich erinnere mich, dies zu tun vor kurzem durch einige Ereignisse und so weiter einstellen, aber ich kann nicht daran zu erinnern, scheinen wie.

War es hilfreich?

Lösung

Textchanged-Ereignis

Sie in Zukunft alle Ereignisse auf der MSDN-Bibliothek finden kann, ist hier die TextBox Klasse Referenz :

http: // msdn.microsoft.com/en-us/library/system.windows.forms.textbox(VS.80).aspx

Andere Tipps

Wenn Sie Datenbindung verwenden, gehen Sie zu den Eigenschaften der Textbox. Open (Databindings) an der Spitze, klicken Sie auf der (Advanced) Eigenschaft, drei Punkte erscheinen (...) Klicken Sie auf diesen. Der erweiterte Datenbindung Bildschirm erscheint. Für jede Eigenschaft des TextBox, die in Ihrem Fall Text gebunden ist, kann eingestellt werden, wenn die Datenbindung und damit die Validierung sollen mittels der Box Data Source Update mode „kick“. Wenn Sie es OnPropertyChanged gesetzt ist, wird es neu zu bewerten, wie Sie (Standard hierfür ist OnValidation die nur aktualisiert, wenn Sie Tab).

Wie werden Ihre Daten gültig, wenn sie nicht fertig ist? das heißt ein Benutzer eine Nummer, und Sie versuchen, es als Datum zu validieren?

Wenn Sie Ihre Textbox auf eine Binding Bindung an Erweitert gehen und Prüfungstyp
wählen „On-Eigenschaft geändert“. Dies wird Ihre Daten zu Ihrem Unternehmen auf jeder Taste drücken propagieren. Hier ist der Screenshot

Sie sollten auf KeyPress oder KeyDown Ereignisse werden überprüft und nicht nur Ihre Textchanged-Ereignis.

Hier ist ein C # Beispiel aus dem MSDN-Dokumentation :

// Boolean flag used to determine when a character other than a number is entered.
private bool nonNumberEntered = false;

// Handle the KeyDown event to determine the type of character entered into the control.
private void textBox1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
{
    // Initialize the flag to false.
    nonNumberEntered = false;

    // Determine whether the keystroke is a number from the top of the keyboard.
    if (e.KeyCode < Keys.D0 || e.KeyCode > Keys.D9)
    {
        // Determine whether the keystroke is a number from the keypad.
        if (e.KeyCode < Keys.NumPad0 || e.KeyCode > Keys.NumPad9)
        {
            // Determine whether the keystroke is a backspace.
            if(e.KeyCode != Keys.Back)
            {
                // A non-numerical keystroke was pressed.
                // Set the flag to true and evaluate in KeyPress event.
                nonNumberEntered = true;
            }
        }
    }
    //If shift key was pressed, it's not a number.
    if (Control.ModifierKeys == Keys.Shift) {
        nonNumberEntered = true;
    }
}

// This event occurs after the KeyDown event and can be used to prevent
// characters from entering the control.
private void textBox1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
{
    // Check for the flag being set in the KeyDown event.
    if (nonNumberEntered == true)
    {
        // Stop the character from being entered into the control since it is non-numerical.
        e.Handled = true;
    }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top