開発用DLL ダウンロードに戻る

NullScrollクラス

NullScrollは、Windows Phone(以下、WM) で画面の上下左右スクロールを簡単に実装するためのクラスです。簡単に画面をタッチスクロールに対応させることができます。

画像のような、各種コントロールが並んでいる Panel の余白部分や、Panel 上のコントロールをドラッグすると、その Panel 自体をスクロールさせることができます。*1

設定画面などの多数のコントロールを画面に並べる場合でも、画面タッチの移動を実装することができます。またこのクラスは数量のコードを追加するだけで実装することが可能で、既存のコードにほとんど影響を与えません。

WM 6.5 以降であれば、Windows Mobile Managed Gestures Sample に含まれているAutoGestureContext を使用することで、タッチスクロール可能なフォームを作成することができますが、この NullScroll を使用すれば WM 6.5 以前でも画面スクロールをさせることができます。

NullScroll-01.png

開発環境

  1. Visual Studio 2008
  2. .NET Compact Framework 2.0 以降
  1. WM 6.5, WM 6 + .NET CF 2.0 で動作確認 ( WM 5.0 でもおそらく動作可能 )

使い方

基本的な使い方

実装は本当にシンプルで、

  1. NullScroll クラスのインスタンスを生成し
  2. スクロールさせる対象のフォームやコントロールを指定する

これだけでスクロール可能にすることができますので、既存のコードやデザイナに悪影響を与えることはありません。 (AutoGestureのように慣性移動はしません)

using SmartPDA.Windows.Forms;

NullScroll scroll;

private void Form_Load(object sender, EventArgs e)
{
       // インスタンスを生成
	this.scroll = new NullScroll();

       // 除外クラスを設定する
       // 
       // フォーム上のコントロールをドラッグすることで、フォームのスクロールができますが
       // スクロールをしないようにするコントロールを、インスタンスかクラスのタイプで指定することができます。
       // (WMデフォルトの動作を優先させたい場合に除外指定します。)
	this.scroll.Excludes.Add(this.checkBox1);
	this.scroll.ExcludeTypes.Add(typeof(ListBox));

       // このフォームがスクロールするように設定
	this.scroll.Setup(this);

       // 移動したときのイベントを拾いたい場合
       this.scroll.BeforeAnimate += new OwnerAnimateHandler(scroll_BeforeAnimate);
       this.scroll.AfterAnimate += new OwnerAnimateHandler(scroll_AfterAnimate);

       // こちらは解除する場合
       // this.scroll.Release();
}

WM 6.5 以降で Gesture API を共存する方法

WM 6.5以降で動作させるときに Gesture API と切り替えて使用する場合は、以下のようにします。 (Windows Mobile Managed Gestures SampleのMicrosoft.WindowsMobile.Gestures.dllを参照に追加します)

using Microsoft.WindowsMobile.Gestures;

NullScroll scroll;
AutoGestureContext agc;

private void NullScrollRunner_Load(object sender, EventArgs e)
{
	if (this.IsOverWM65())
	{
		this.agc = AutoGestureContext.GetContext(this);
		this.agc.IgnorePan = false;
		this.agc.IgnoreScroll = false;
		this.agc.IsHorizontallyScrollable = true;
		this.agc.IsVerticallyScrollable = true;
	}
	else
	{
		this.scroll = new NullScroll();
		this.scroll.Excludes.Add(this.checkBox1);
		this.scroll.ExcludeTypes.Add(typeof(ListBox));
		this.scroll.Setup(this);
	}
}

private bool IsOverWM65()
{
	// バージョンを取得する
	Version osVer = System.Environment.OSVersion.Version;

	// WM 6.5 以降であるかどうか判定
	if (osVer.Major >= 5 && osVer.Minor >= 2)
	{
		// OS 6.5 以降である
		if (osVer.Build > 21000)
		{
			return true;
		}
			}

	// WM6.5 以降ではない
	return false;

}

著作権及び免責

著作権

NullScroll の著作権は、Smart-PDA.net 管理者 Mikio Fukushima が保持しています。NullScroll は自己責任の上でご利用ください。ソースコードの流用、DLL の同梱・再配布なども適当に行ってください。

履歴

2010-06-27

スクロール前後に発生するイベント AfterAnimate, BeforeAnimate を追加した。

2010-06-26

初版リリース

ダウンロード

NullScroll はフリーソフトです。
無料で使用することが出来ます。

download.png

バージョン : 2010-06-27
サイズ : 28KB
更新日 : 2010-06-27
(過去のバージョン)



*1 スクロールすることが可能なクラスは ScrollableControl を継承しているクラスです。