方法 :Label のフォームをスクロールする

更新 : 2007 年 11 月

Label コントロールはフォーカスを受け取らず、タブ移動をサポートしていないため、Label コントロールだけの Smartphone アプリケーションでは、フォームの表示可能なクライアント領域外にあるラベルに移動することはできません。Pocket PC アプリケーションのユーザーは、スクロール バーをタップして移動できますが、Smartphone ではこの機能を利用できません。

移動を実装するには、KeyDown イベントのイベント ハンドラに、AutoScrollPosition プロパティを調整するコードを含めます。

Label コントロールのフォームをスクロールするには

  1. 表示されるクライアント領域の下に一部のコントロールが置かれるように、いくつかの Label コントロールをフォームに追加します。位置を指定するには、Microsoft Visual Studio 2005 デザイナで方向キーを使用するか、初期化コードを記述します。

  2. フォームのコンストラクタで、KeyPreview プロパティおよび AutoScroll プロパティを true に設定します。C# ユーザーは、KeyDown イベント ハンドラのデリゲートを追加する必要があります。

    Me.KeyPreview = True
    Me.AutoScroll = True
    
    this.KeyPreview = true;
    this.KeyDown += new KeyEventHandler(Form1_KeyDown);
    this.AutoScroll = true;
    
  3. AutoScrollPosition プロパティを設定すると、設定されたピクセル数だけ y 位置の座標が垂直に移動されます。次のコード例では、16 を使用します。AutoScrollPosition のオフセットが負の値であるために、このコードは複雑ですが、指定される位置の値は正の値で表す必要があります。

    Private Sub Form1_KeyDown(ByVal Sender As System.Object, _
        ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown
        If e.KeyCode = System.Windows.Forms.Keys.Up Then
            Me.AutoScrollPosition = New Point(0, -Me.AutoScrollPosition.Y - 16)
        End If
        If e.KeyCode = System.Windows.Forms.Keys.Down Then
            Me.AutoScrollPosition = New Point(0, -Me.AutoScrollPosition.Y + 16)
        End If
    End Sub
    
    private void Form1_KeyDown(object sender, KeyEventArgs e)
    {
        if ((e.KeyCode == System.Windows.Forms.Keys.Up))
        {
            this.AutoScrollPosition = new Point(0, -this.AutoScrollPosition.Y - 16);
        }
        if ((e.KeyCode == System.Windows.Forms.Keys.Down))
        {
            this.AutoScrollPosition = new Point(0, -this.AutoScrollPosition.Y + 16);
        }
    

コードのコンパイル方法

この例では、次の名前空間への参照が必要です。

参照

概念

.NET Compact Framework に関する「方法」トピック

その他の技術情報

Smartphone の開発と .NET Compact Framework