2009-04-14 11 views
1

Ich habe eine Symbolleiste erstellt, die über drei Steuerelemente verfügt. Der erste ist ein Textfeld, ein OK-Button und ein Clear-Button. Im Wesentlichen verwende ich diese Symbolleiste, um etwas Text zu suchen. Wenn keine Ergebnisse gefunden werden, öffne ich ein Meldungsfeld, das den Benutzer informiert, dass keine Ergebnisse gefunden wurden. Wenn der Benutzer jedoch auf die Schaltfläche "OK" des Meldungsfelds klickt, verliert das Textfeld den Fokus und der Fokus wird an das nächste Steuerelement übergeben, bei dem es sich um die Schaltfläche "OK" handelt. Was soll ich tun, um zu vermeiden, dass das Textfeld den Fokus verliert? Ich benutze C#.Meldungsfeld verursacht Fokusverlust

Antwort

2

Sie können nicht. Wenn Sie auf die Schaltfläche "OK" klicken, wird die Kontrolle übernommen (und die Textbox verliert die Kontrolle).

Sie können jedoch tun dies auf dem Click-Ereignis:

MessageBox.Show("asdf"); 
textBox1.Focus(); 

EDIT

Als Antwort auf Ihren Kommentar, ich glaube nicht, dass es eine einfache Möglichkeit, Fokus zurückzukehren das letzte Steuerelement, nachdem ein anderes Steuerelement den Fokus erhalten hat, und die Schaltflächen zum Suchen und Löschen müssen den Fokus erhalten, wenn Sie darauf klicken. Sie können dies tun:

private Control _last; 

private void textBox1_Leave(object sender, EventArgs e) 
{ 
    _last = (Control) sender; 
} 

private void button1_Click(object sender, EventArgs e) 
{ 
    MessageBox.Show("asdf"); 
    _last.Focus(); 
} 
+0

Danke für die Antwort. Ich habe mich gefragt, ob es eine Möglichkeit gibt, dieses Problem zu lösen, ohne den Fokus des Textfelds explizit festzulegen. –

0

Es ist nicht ganz klar Ihre Frage, aber Sie können Ihre Kontrolle übernehmen den Fokus wie folgt machen:

textBox1.Focus(); 
Verwandte Themen