[[開発用DLL ダウンロードに戻る>software/開発用DLL]]

#splitbody(tag=div,style=margin-right:10px){{
#split(width=65%)
*NullScrollクラス
NullScrollは、Windows Phone(以下、WM) で画面の上下左右スクロールを簡単に実装するためのクラスです。簡単に画面をタッチスクロールに対応させることができます。
&br;&br;
画像のような、各種コントロールが並んでいる Panel の余白部分や、Panel 上のコントロールをドラッグすると、その Panel 自体をスクロールさせることができます。((スクロールすることが可能なクラスは ScrollableControl を継承しているクラスです。))
&br;&br;
設定画面などの多数のコントロールを画面に並べる場合でも、画面タッチの移動を実装することができます。またこのクラスは数量のコードを追加するだけで実装することが可能で、既存のコードにほとんど影響を与えません。&br;
&br;
WM 6.5 以降であれば、[[Windows Mobile Managed Gestures Sample に含まれているAutoGestureContext>http://code.msdn.microsoft.com/gestureswm/Release/ProjectReleases.aspx?ReleaseId=3438]] を使用することで、タッチスクロール可能なフォームを作成することができますが、この NullScroll を使用すれば WM 6.5 以前でも画面スクロールをさせることができます。

&ref(NullScroll-01.png,nolink);

*開発環境
+Visual Studio 2008
+.NET Compact Framework 2.0 以降

+WM 6.5, WM 6 + .NET CF 2.0 で動作確認
( WM 5.0 でもおそらく動作可能 )

*使い方 [#pcd657f9]
**基本的な使い方
実装は本当にシンプルで、
+NullScroll クラスのインスタンスを生成し
+スクロールさせる対象のフォームやコントロールを指定する

これだけでスクロール可能にすることができますので、既存のコードやデザイナに悪影響を与えることはありません。
(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の>http://code.msdn.microsoft.com/gestureswm/Release/ProjectReleases.aspx?ReleaseId=3438]]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
初版リリース

#split(width=30%)
*ダウンロード
CENTER:NullScroll はフリーソフトです。&br;
無料で使用することが出来ます。&br;
&br;
[[&ref(メインページ/download.png,nolink);>software/開発用DLL/NullScroll/過去のバージョン]]
&br;&br;
CENTER:バージョン : 2010-06-27&br;
サイズ : 28KB&br;
更新日 : 2010-06-27&br;
[[(過去のバージョン)>software/開発用DLL/NullScroll/過去のバージョン]] &br;
}}
&br;
-----