方法 :Label のフォームをスクロールする
更新 : 2007 年 11 月
Label コントロールはフォーカスを受け取らず、タブ移動をサポートしていないため、Label コントロールだけの Smartphone アプリケーションでは、フォームの表示可能なクライアント領域外にあるラベルに移動することはできません。Pocket PC アプリケーションのユーザーは、スクロール バーをタップして移動できますが、Smartphone ではこの機能を利用できません。
移動を実装するには、KeyDown イベントのイベント ハンドラに、AutoScrollPosition プロパティを調整するコードを含めます。
Label コントロールのフォームをスクロールするには
表示されるクライアント領域の下に一部のコントロールが置かれるように、いくつかの Label コントロールをフォームに追加します。位置を指定するには、Microsoft Visual Studio 2005 デザイナで方向キーを使用するか、初期化コードを記述します。
フォームのコンストラクタで、KeyPreview プロパティおよび AutoScroll プロパティを true に設定します。C# ユーザーは、KeyDown イベント ハンドラのデリゲートを追加する必要があります。
Me.KeyPreview = True Me.AutoScroll = True
this.KeyPreview = true; this.KeyDown += new KeyEventHandler(Form1_KeyDown); this.AutoScroll = true;
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 に関する「方法」トピック