locked
onFocus selectAll RRS feed

Antworten

  • Hi,

    nach ein wenig herumprobieren musste ich nochmal nachschauen.
    Das Problem liegt anscheinend in der Vararbeitung der Window Messages.
    Folgendes Snippet sollte daher weiterhelfen:

            private void textBox1_GotFocus(object sender, EventArgs e)
            {
                int EM_SETSEL = 0x00B1; // die WM für markieren von Text

                Microsoft.WindowsCE.Forms.Message msg;
                msg = Microsoft.WindowsCE.Forms.Message.Create(textBox1.Handle, EM_SETSEL, new IntPtr(0), new IntPtr(textBox1.Text.Length));
                MessageWindow.PostMessage(ref msg);
            }

    Bitte füge noch die Referenz zur Assembly Microsoft.WindowsCE.Forms.dll hinzu...

    Gruß, Peter
    This posting is provided "AS IS" with no warranties, and confers no rights.
    • Als Antwort vorgeschlagen PeterNowak Montag, 7. September 2009 09:44
    • Als Antwort markiert Robert Breitenhofer Dienstag, 8. September 2009 08:53
    Montag, 7. September 2009 09:40

Alle Antworten

  • Hi,

    hast du den Tipp aus dem folgendem englischen Posting mal versucht?
    http://groups.google.com/group/microsoft.public.dotnet.framework.windowsforms.controls/browse_thread/thread/7ee66dbcf6f844b1?tvc=2&q=textbox+select+enter

    Hier werden andere Events verwendet, mit denen die gewünschte Funktionalität erreicht werden soll.

    Gruß, Peter
    This posting is provided "AS IS" with no warranties, and confers no rights.
    • Bearbeitet Robert Breitenhofer Freitag, 4. September 2009 08:55 Link als Link
    • Als Antwort markiert PeterNowak Montag, 7. September 2009 07:39
    • Tag als Antwort aufgehoben PeterNowak Montag, 7. September 2009 09:40
    Donnerstag, 3. September 2009 06:08
  • Hallo Peter,
    erstmal Danke für deine Antwort.
    ich hab das mal auf .netCF "umgeschrieben".
    private bool _selectAll; 
    		private void txt_be_gotFocus(object sender, System.EventArgs e) 
    		{
    			_selectAll = true; 
    			txt_be.SelectAll(); 
    		}
    
    		private void txt_be_KeyDown(object sender, KeyEventArgs e)
    		{ 
    			if (_selectAll) 
    			txt_be.SelectAll(); 
    		}
    
    
    		private void txt_be_KeyUp(object sender, KeyEventArgs e)
    		{ 
    			_selectAll = false; 
    		}	
    Aber leider geht die Markierung hier auch verloren, sobald txt_be_gotFocus verlassen wird. Erst wenn wenn man in dem Textfeld eine Taste drückt, dann ist die Markierung wieder da und so wird dann der Inhalt des Textfeldes komplett mit dem neuen Zeichen überschrieben. Das verwirrt "meine Benutzer" aber bestimmt zu sehr ...
    Donnerstag, 3. September 2009 10:04
  • Hi,

    schau dir den Quellcode des vorher geposteten Artikels einmal bitte genau an. Dort wird nämlich anstatt des "gotFocus"-Ereignisses das Enter-Ereigniss verwendet.
    This posting is provided "AS IS" with no warranties, and confers no rights.
    • Als Antwort markiert PeterNowak Montag, 7. September 2009 07:39
    • Tag als Antwort aufgehoben PeterNowak Montag, 7. September 2009 09:41
    Donnerstag, 3. September 2009 10:22
  • Ich kann kein "Enter"-Ereignis bei meiner TextBox (System.Windows.Forms.TextBox) finden. Vielleicht gibt es im .Net Compact Framework kein Enter-Event bei Text-Boxen?

    • Als Antwort vorgeschlagen PeterNowak Montag, 7. September 2009 09:44
    • Nicht als Antwort vorgeschlagen PeterNowak Montag, 7. September 2009 09:44
    Montag, 7. September 2009 07:52
  • Hi,

    nach ein wenig herumprobieren musste ich nochmal nachschauen.
    Das Problem liegt anscheinend in der Vararbeitung der Window Messages.
    Folgendes Snippet sollte daher weiterhelfen:

            private void textBox1_GotFocus(object sender, EventArgs e)
            {
                int EM_SETSEL = 0x00B1; // die WM für markieren von Text

                Microsoft.WindowsCE.Forms.Message msg;
                msg = Microsoft.WindowsCE.Forms.Message.Create(textBox1.Handle, EM_SETSEL, new IntPtr(0), new IntPtr(textBox1.Text.Length));
                MessageWindow.PostMessage(ref msg);
            }

    Bitte füge noch die Referenz zur Assembly Microsoft.WindowsCE.Forms.dll hinzu...

    Gruß, Peter
    This posting is provided "AS IS" with no warranties, and confers no rights.
    • Als Antwort vorgeschlagen PeterNowak Montag, 7. September 2009 09:44
    • Als Antwort markiert Robert Breitenhofer Dienstag, 8. September 2009 08:53
    Montag, 7. September 2009 09:40
  • Ich hab zwar nicht verstanden, was da passiert, aber es funktioniert prima. Vielen Dank :-)

    Dienstag, 8. September 2009 08:26