web-dev-qa-db-fra.com

textbox.Focus () ne fonctionne pas en C #

je me demande pourquoi ce code ne parvient pas à concentrer la zone de texte ...?

private void sendEmail_btn_Click(object sender, EventArgs e)
{    
    String sendTo = recipientEmail_tbx.Text.Trim();
    if (!IsValidEmailAddress(sendTo))
    {
        MessageBox.Show("Please Enter valid Email address","Cognex" MessageBoxButtons.OK, MessageBoxIcon.Error);                
        recipientEmail_tbx.Focus();
    }
}
42
Dark Knight

Utilisez à la place Select():

recipientEmail_tbx.Select();

Le focus est une méthode de bas niveau destinée principalement aux auteurs de contrôles personnalisés. À la place, les programmeurs d'applications doivent utiliser la méthode Select ou la propriété ActiveControl pour les contrôles enfants, ou la méthode Activate pour les formulaires.

http://msdn.Microsoft.com/en-us/library/system.windows.forms.control.focus.aspx

101
Daniel Peñalba

Ajoutez Delay some miliSec. Retardez ensuite appelez Focus() et n'oubliez pas de mettre à l'intérieur Dispatcher.

Task.Delay(100).ContinueWith(_ =>
     {
         Application.Current.Dispatcher.Invoke(new Action(() =>
         {
             TextBoxNAme.Focus();
         }));
     });
5
Abhishek Maurya

Même moi, j'ai essayé avec beaucoup de solutions ci-dessus, mais aucune d'entre elles n'a fonctionné pour moi car j'essaie de me concentrer sur le chargement des pages. Enfin, j'ai obtenu cette solution et cela a fonctionné.

private void txtBox_LayoutUpdated(object sender, EventArgs e)
{
    txtBox.Focus();
}
3
Balasubramani M

Utilisez le gestionnaire d'événements Form_Activated, en conjonction avec un booléen firstActivation.

private bool firstActivation = true;
private Control firstWindowsControl = null;

...

private void DynamicForm_Activated(object sender, EventArgs e)
{
    if (firstActivation)
    {
        firstActivation = false;
        bool fwcPresent = (firstWindowsControl != null);
        Console.WriteLine($"DynamicForm_Activated: firstWindowControl present: {fwcPresent}");
        if (fwcPresent)
        {
            firstWindowsControl.Focus();
        }

    }
0
JGFMK