2015-02-18 2 views
6

Ich möchte alle Inhalte eines MaskedTextBox auswählen, wenn die Klicks (oder Tabs auf) das Steuerelement, so dass sie den alten Inhalt leicht ersetzen können. Ich habe versucht, SelectAll() im Enter Ereignis anzurufen, aber das hat überhaupt nicht funktioniert.MaskedTextBox.SelectAll auf GotFocus funktioniert nicht mit der Maus

Ich wechselte zum GotFocus Ereignis, das funktioniert gut beim Tab durch Kontrollen, funktioniert aber nicht, wenn ich es mit der Maus anklicke. Ich möchte nur alle Inhalte auswählen, wenn ich zum ersten Mal auf das Steuerelement zugreife/fokussiere (nachfolgende Klicks könnten dazu verwendet werden, den Cursor zu positionieren, um den vorhandenen Text zu bearbeiten).

Ich habe eine Schaltfläche hinzugefügt und versucht, SelectAll() in der Schaltfläche klicken Ereignis, aber das hat auch nichts getan. Was ist los? Ist das ein Fehler?

Wie kann ich das umgehen?


Schritte

  1. eine neue Windows Forms-Anwendung in .NET 4.0 in Visual Studio 2010.
  2. hinzufügen TextBox, MaskedTextBox und Button zum Standardformular erstellen zu reproduzieren
  3. Ändern Sie die Eigenschaft Mask der MaskedTextBox zu "_____".
  4. hinzufügen einige Event-Handler:

    private void maskedTextBox1_GotFocus(object sender, EventArgs e) 
    { 
        Debug.WriteLine("GotFocus"); 
        maskedTextBox1.SelectAll(); 
    } 
    
    private void button1_Click(object sender, EventArgs e) 
    { 
        Debug.WriteLine("Click"); 
        maskedTextBox1.SelectAll(); 
    } 
    
  5. Führen Sie das Programm, trat einige Daten in die MaskedTextBox, Registerkarte durch Steuerelemente es zurück. Es wählt den Inhalt der MaskedTextBox aus.

  6. Wählen Sie die andere TextBox aus. Versuchen Sie, auf MaskedTextBox zu klicken. Die Ausgabe zeigt, dass GotFocus Ereignis wurde aufgerufen, aber Text wird nicht ausgewählt.
  7. Klicken Sie auf Schaltfläche in Formular. Text wird nicht ausgewählt.

Getestet in Visual Studio 2010 mit .NET 4.0 in einer Windows Forms-Anwendungsprojekt


Warum diese TextBox.SelectAll() does not work with TAB

kein Duplikat ist, wenn Sie feststellen, die Titel sagt "SelectAll funktioniert nicht mit TAB". In meinem Fall ist es funktioniert arbeiten mit Tab, es nicht arbeiten mit der Maus - völlig entgegengesetzte Szenario. Die Antwort für diese Frage ist die Verwendung des Ereignisses GotFocus. Ich verwende bereits das GotFocus Ereignis, aber es funktioniert nicht. Diese Antwort beantwortet diese Frage nicht. Es ist eindeutig kein Duplikat. Wenn ich falsch liege, bitte erläutern Sie in den Kommentaren.

+1

Look [hier] (http://stackoverflow.com/questions/97459/automatically-select-all-text-on-focus-in-winforms-textbox), könnte es helfen –

Antwort

8

Ihre SelectAll() wird durch die Standardfunktionalität des maskierten Textfelds überschrieben. Ich würde das Ereignis Enter verwenden, es ermöglicht Eintrag mit Registerkarten oder Mausklick in das maskierte Textfeld.Sie werden höchstwahrscheinlich die BeginInvoke Methode verwenden müssen. Probieren Sie den folgenden Code aus. Es funktionierte für mich, als ich versuchte ...

private void maskedTextBox1_Enter(object sender, EventArgs e) 
{ 
    BeginInvoke((Action) delegate { SetMaskedTextBoxSelectAll((MaskedTextBox) sender); }); 
} 

private void SetMaskedTextBoxSelectAll(MaskedTextBox txtbox) 
{ 
    txtbox.SelectAll(); 
} 
+1

Erzwingt 'BeginInvoke' nur die Ausführung von' SelectAll() ', nachdem die Standardfunktionalität des maskierten Textfelds ausgeführt wurde? Ich würde gerne mehr darüber erfahren, warum das funktioniert, wenn es Ihnen nichts ausmacht, Ihre Antwort ein wenig mehr zu erweitern. –

+1

Ich fand eine [weniger wortreiche Art] (http://stackoverflow.com/a/1007612/945456), BeginInvoke zu machen und habe mir die Freiheit genommen, die Antwort zu editieren. –

+1

Hier ist etwas anständiges Lesen auf BeginInvoke. CodeProject kann es viel besser erklären als ich kann. Aber yeah im Grunde in Ihrem Beispiel BeginInvoke läuft nach der Standardfunktionalität. http://www.codeproject.com/Articles/10311/What-Su-up-with-BeginInvoke –

Verwandte Themen