Condividi tramite


Classe HardwareButton

Aggiornamento: novembre 2007

Consente di eseguire l'ovverride della funzionalità dei pulsanti hardware del Pocket PC.

Spazio dei nomi:  Microsoft.WindowsCE.Forms
Assembly:  Microsoft.WindowsCE.Forms (in Microsoft.WindowsCE.Forms.dll)

Sintassi

'Dichiarazione
Public Class HardwareButton _
    Inherits Component
'Utilizzo
Dim instance As HardwareButton
public class HardwareButton : Component
public ref class HardwareButton : public Component
public class HardwareButton extends Component

Note

Per configurare un pulsante del Pocket PC in modo che attivi un oggetto Form, un oggetto Panel o un controllo personalizzato nell'applicazione procedere come segue:

  • Creare un'istanza dell'oggetto HardwareButton.

  • Impostare la proprietà AssociatedControl sul modulo o sul controllo che si desidera attivare.

  • Impostare la proprietà HardwareKey su uno dei valori dell'enumerazione HardwareKeys. È possibile configurare fino a sei pulsanti hardware.

Quando un pulsante hardware è associato a un controllo, il controllo riceve un evento KeyDown quando il pulsante viene premuto e un evento KeyUp quando il pulsante viene rilasciato.

Per ripristinare lo stato originale di un pulsante hardware, impostare la proprietà AssociatedControl su nullriferimento null (Nothing in Visual Basic).

Si osservi che alcuni Pocket PC presentano un numero di pulsanti hardware diverso (superiore a sei). Non tutti i pulsanti, inoltre, sono supportati dal sistema operativo. Windows Mobile 2003 per Pocket PC supporta quattro pulsanti, mentre Windows Mobile versione 5.0 per Pocket PC supporta cinque pulsanti.

Questa classe non è supportata nei dispositivi Smartphone e negli altri dispositivi Windows CE diversi dai Pocket PC.

Esempi

Nell'esempio di codice riportato di seguito viene illustrato come attivare un modulo utilizzando il primo e il quarto pulsante hardware in un Pocket PC.

Imports System
Imports System.Windows.Forms
Imports Microsoft.WindowsCE.Forms


Public Class Form1
   Inherits System.Windows.Forms.Form
   Private statusBar1 As StatusBar
   Private hwb1 As HardwareButton
   Private hwb4 As HardwareButton


   Public Sub New()

      InitializeComponent()

      ' Display OK button to close the application.
      Me.ControlBox = True
      Me.MinimizeBox = False

      ConfigHWButton()


   End Sub


   Protected Overrides Sub Dispose(disposing As Boolean)
      MyBase.Dispose(disposing)
   End Sub

   Private Sub InitializeComponent()
      Me.statusBar1 = New System.Windows.Forms.StatusBar()
      Me.hwb1 = New Microsoft.WindowsCE.Forms.HardwareButton
      Me.hwb4 = New Microsoft.WindowsCE.Forms.HardwareButton
      Me.SuspendLayout()
      '
      ' statusBar1
      '
      Me.statusBar1.Location = New System.Drawing.Point(0, 246)
      Me.statusBar1.Name = "statusBar1"
      Me.statusBar1.Size = New System.Drawing.Size(240, 22)
      '
      ' Form1
      '
      Me.ClientSize = New System.Drawing.Size(240, 268)
      Me.Controls.Add(statusBar1)
      Me.Name = "Form1"
      Me.Text = "HW Button Test"
      Me.ResumeLayout(False)
      statusBar1.Text = "From another app, press button 1 or 4."
   End Sub

   Shared Sub Main()
      Application.Run(New Form1())
   End Sub
   Private Sub ConfigHWButton()
      'Set KeyPreview to true so that the form 
      'will receive key events before they 
      'are passed to the control that has focus. 

       Me.KeyPreview = True

         hwb1 = New HardwareButton()
         hwb4 = New HardwareButton()

      'Set the AssociatedControl property
      'to the current form and configure the
      'first and fourth buttons to activate the form.
      Try
         hwb1.AssociatedControl = Me
         hwb4.AssociatedControl = Me
         hwb1.HardwareKey = HardwareKeys.ApplicationKey1
         hwb4.HardwareKey = HardwareKeys.ApplicationKey4
      Catch exc As Exception
         MessageBox.Show(exc.Message + " Check if the hardware button is physically available on this device.")
      End Try
    End Sub

   Private Overloads Sub OnKeyUp(sender As Object, e As KeyEventArgs) Handles MyBase.KeyUp
       ' When a hardware button is pressed and released,
       ' this form receives the KeyUp event. The OnKeyUp
       ' method is used to determine which hardware
       ' button was pressed, because the event data
       ' specifies a member of the HardwareKeys enumeration.
       Select Case CType(e.KeyCode, HardwareKeys)
         Case HardwareKeys.ApplicationKey1
            statusBar1.Text = "Button 1 pressed."

         Case HardwareKeys.ApplicationKey4
            statusBar1.Text = "Button 4 pressed."

         Case Else
      End Select
   End Sub
End Class 
using System;
using System.Drawing;
using System.Collections;
using System.Windows.Forms;
using Microsoft.WindowsCE.Forms;

namespace HardwareButtonTest
{
    public class Form1 : System.Windows.Forms.Form
    {
        private StatusBar statusBar1;
        private HardwareButton hwb1, hwb4;

        public Form1()
        {

            InitializeComponent();

            // Display OK button to close the application.
            this.ControlBox = true;
            this.MinimizeBox = false;

            // Create event-handler delegate for the KeyUp
            // event for this form. This form is associated
            // with each of the hardware buttons, and the
            // event occurs when a hardware button is pressed.
            // Note that you could also use the KeyDown event
            // instead of the KeyUp event.
            this.KeyPreview = true;
            this.KeyUp += new KeyEventHandler(this.OnKeyUp);

            // Call the method to configure
            // the hardware button.
            HBConfig();
        }

        protected override void Dispose(bool disposing)
        {
            base.Dispose(disposing);
        }
        private void InitializeComponent()
        {
            this.statusBar1 = new System.Windows.Forms.StatusBar();
            this.SuspendLayout();
//
// statusBar1
//
            this.statusBar1.Location = new System.Drawing.Point(0, 246);
            this.statusBar1.Name = "statusBar1";
            this.statusBar1.Size = new System.Drawing.Size(240, 22);
//
// Form1
//
            this.ClientSize = new System.Drawing.Size(240, 268);
            this.Controls.Add(this.statusBar1);
            this.Name = "Form1";
            this.Text = "HW Button Test";
            this.ResumeLayout(false);
            statusBar1.Text = "Press hardware button 1 or 4.";

        }

        static void Main()
        {
            Application.Run(new Form1());
        }


        // Configure hardware buttons
        // 1 and 4 to activate the current form.
        private void HBConfig()
            {
                try 
                {
                    hwb1 = new HardwareButton();
                    hwb4 = new HardwareButton();
                    hwb1.AssociatedControl = this;
                    hwb4.AssociatedControl = this;
                    hwb1.HardwareKey = HardwareKeys.ApplicationKey1;
                    hwb4.HardwareKey = HardwareKeys.ApplicationKey4;
                }
                catch (Exception exc)
                {
                    MessageBox.Show(exc.Message + " Check if the hardware button is physically available on this device.");
                }
        }

        // When a hardware button is pressed and released,
        // this form receives the KeyUp event. The OnKeyUp
        // method is used to determine which hardware
        // button was pressed, because the event data
        // specifies a member of the HardwareKeys enumeration.
        private void OnKeyUp(object sender, KeyEventArgs e)
        {
            switch ((HardwareKeys)e.KeyCode)
            {
                case HardwareKeys.ApplicationKey1:
                    statusBar1.Text = "Button 1 pressed.";
                    break;

                case HardwareKeys.ApplicationKey4:
                    statusBar1.Text = "Button 4 pressed.";
                    break;

                default:
                    break;
            }
        }
    }
}

Gerarchia di ereditarietà

System.Object
  System.MarshalByRefObject
    System.ComponentModel.Component
      Microsoft.WindowsCE.Forms.HardwareButton

Codice thread safe

Qualsiasi membro static (Shared in Visual Basic) pubblico di questo tipo è thread-safe. I membri di istanza non sono garantiti come thread-safe.

Piattaforme

Windows Mobile per Pocket PC

.NET Framework e .NET Compact Framework non supportano tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema di .NET Framework.

Informazioni sulla versione

.NET Compact Framework

Supportato in: 3.5, 2.0

Vedere anche

Riferimenti

Membri HardwareButton

Spazio dei nomi Microsoft.WindowsCE.Forms

Altre risorse

Procedura: utilizzare il componente HardwareButton