2012-02-16 3 views
1

Je développe une application C# en utilisant Windows 6 appareil mobile professionnel. Je veux détecter un événement lorsque l'utilisateur appuie sur la barre d'état, puis affiche une zone de liste. La barre d'état .NET CF n'a pas de touche enfoncée ou d'événements autres que le texte modifié ou le parent modifié. Comment puis-je aborder ce problème?Détection d'un tap sur le contrôle de barre d'état dans .net CF 3.5

Merci,

Répondre

0

Je n'ai pas vraiment essayé cela pour YMMV, mais si je devais résoudre le problème, je serais probablement essayer de sous-classe le formulaire parent et rechercher des messages de la souris dans la région où la barre d'état est. Il y a an article in MSDN magazine qui couvre les formulaires de sous-classement dans le cadre compact qui devraient vous atteindre 95% du chemin.

0

Si vous parlez du Input Panel logiciel, vous devez ajouter une référence à Microsoft.WindowsCE.Forms, puis déposez un contrôle Panneau de saisie sur votre formulaire.

code C++ par exemple ici: http://support.microsoft.com/kb/264034

Fondamentalement, le fil juste le seul événement pour le contrôle Input Panel. Je l'ai fait quelque chose comme ça pas trop longtemps:

void SIP_EnabledChanged(object sender, EventArgs e) { 
    int locationY = Y_START; // defined as txtNote.Location.Y when the form loads 
    if (inputPanel1.Enabled) { 
    locationY -= inputPanel1.Bounds.Height; 
    } 
    txtNote.SuspendLayout(); 
    txtNote.Bounds = new Rectangle(
    txtNote.Location.X, 
    locationY, 
    txtNote.Size.Width, 
    txtNote.Size.Height 
); 
    txtNote.ResumeLayout(); 
    txtNote.Refresh(); 
} 
0

Control.Capture devrait vous aider: http://msdn.microsoft.com/en-us/library/system.windows.forms.control.capture%28v=vs.80%29.aspx

Dans le constructeur de votre formulaire définissez la propriété Capture True:

this.Capture = true; 

Ensuite, ajoutez les gestionnaires d'événements de souris à votre formulaire. .: par exemple

// This method handles the mouse down event for all the controls on the form. 
// When a control has captured the mouse 
// the control's name will be output on label1. 
private void Control_MouseDown(System.Object sender, 
    System.Windows.Forms.MouseEventArgs e) 
{ 
    Control control = (Control) sender; 
    if (control.Capture) 
    { 
     label1.Text = control.Name+" has captured the mouse"; 
    } 
} 

Il sera élevé même le contrôle de l'enfant a cliquez.

Questions connexes