2010-05-13 4 views
2

Je dois avoir ma boîte d'édition qui fonctionne de la même manière pour l'onglet et la touche d'entrée.Comment envoyer par programme une touche TAB dans netcf

J'ai trouvé beaucoup de problèmes à faire cela dans l'application. Est-il possible que je puisse envoyer une clé de tabulation à la boîte de formulaire/édition.

(Notez que cela doit être dans le Compact Framework.)


Solution:
Voici ce que je fini par utiliser:

// This class allows us to send a tab key when the the enter key is pressed for the mooseworks mask control. 
public class MaskKeyControl : MaskedEdit 
{ 
    [DllImport("coredll.dll", EntryPoint = "keybd_event", SetLastError = true)] 
    internal static extern void keybd_event(byte bVk, byte bScan, int dwFlags, int dwExtraInfo); 

    public const Int32 VK_TAB = 0x09; 

    protected override void OnKeyDown(KeyEventArgs e) 
    { 
     if (e.KeyData == Keys.Enter) 
     { 
      keybd_event(VK_TAB, VK_TAB, 0, 0); 
      return; 
     } 
     base.OnKeyDown(e); 
    } 

    protected override void OnKeyPress(KeyPressEventArgs e) 
    { 
     if (e.KeyChar == '\r') 
      e.Handled = true; 
     base.OnKeyPress(e); 
    } 
} 

Je donne la réponse à Hans parce que son code m'a amené vers la bonne solution.

Répondre

2

Vous pouvez essayer ce contrôle:

using System; 
using System.Windows.Forms; 

class MyTextBox : TextBox { 
    protected override void OnKeyDown(KeyEventArgs e) { 
     if (e.KeyData == Keys.Enter) { 
      (this.Parent as ContainerControl).SelectNextControl(this, true, true, true, true); 
      return; 
     } 
     base.OnKeyDown(e); 
    } 
    protected override void OnKeyPress(KeyPressEventArgs e) { 
     if (e.KeyChar == '\r') e.Handled = true; 
     base.OnKeyPress(e); 
    } 
} 
+0

Hélas qui ne fonctionne pas. D'une certaine façon, l'onglet fonctionne, mais pas le contrôle suivant. Je pense que c'est parce que seuls les menus sont activés jusqu'à ce que la touche Tab soit pressée et que la commande perd son focus. Très frustrant .... – Vaccano

+0

Vous ne savez pas ce que vous voulez dire, mais vous ne pouvez pas passer à un autre contrôle si aucun n'est activé ou visible. –

+0

Merci de m'avoir initié Hans. Voir la solution qui a fonctionné dans la question. – Vaccano

Questions connexes