Windows Phoneアプリケーション開発入門

第4回 Windows phoneでテキストエディタを作ろう!(2)

この記事を読むのに必要な時間:およそ 3 分

はじめに

前回は,フォームデザイナを使ってテキストエディタに見えるようにコントロールを配置しました。メニューアイテムもそのうちのひとつで,⁠コピー」をクリックするとClipboardクラスを利用してテキストのコピーを行うように実装しました。やり直し機能はTextBoxコントロールのUndoメソッドで実装しました。

「Windows phoneでテキストエディタを作ろう!」の2回目では,⁠切り取り」⁠貼り付け」を実装しましょう。今回も実装後のサンプルプログラムを用意しています。

切り取りと貼り付け機能の実装は難しい……

「切り取り」は選択されているテキストを切り取りクリップボードにコピーします。切り取られたテキストはTextBoxから消えます。⁠貼り付け」はそのクリップボードにコピーされたテキストをTextBoxに貼り付けます。

この「切り取り」「貼り付け」の実装は若干難しいです。.NET Compact Frameworkでは,デスクトップ版の.NET Frameworkと比べると実装されていないメソッド・プロパティ・イベントが存在しているというのは前回でも書きましたが,今回実装する「切り取り」⁠貼り付け」に関してもTextBoxコントロールにはそれ用のメソッドが存在しません。

TextBoxコントロールは入力したテキストをTextプロパティを通して取得したり設定したりすることが可能ですが,直接Textプロティの文章を消したり挿入すると,Undoメソッドでは元に戻すことができません。さらにCtrl+Xによる切り取り,Ctrl+Vによる貼り付けと挙動が違ってしまい違和感があります。

それでは困りました。さてどうしましょうか。

.NET Compact FrameworkでWindows メッセージに触れる

Windowsでは,1つのオブジェクトを1つのウィンドウとして扱って,ウィンドウ間を「マウスの座標が変わった」⁠とあるキーが押された」⁠再描画の要求」等のメッセージ・パッシングを行っています。このメッセージのことを「Windows メッセージ」と呼びます。Windows Mobileでも同じようにこのWindows メッセージが飛び交っています。

.NET Frameworkでは,基本的に直接Windows メッセージに触れなくてもよいようにと,メソッド化して隠蔽されています。サブセットである.NET Compact Frameworkでは,そのメソッド自体が実装されていないことが多々ありますので,自前で実装しなければいけません。

Microsoft.Windowsce.Forms 名前空間に,C#(マネージドコード)からWindowsメッセージを扱えるようにするMessage構造体とMessageWindowsクラスがあります。試しにコピー機能をClipboardクラスを使わずにWindows メッセージで処理させてみましょう。

参照の追加

Message構造体MessageWindowsクラスの解説の中に以下の記載があります。

名前空間Microsoft.WindowsCE.Forms
アセンブリMicrosoft.WindowsCE.Forms(Microsoft.WindowsCE.Forms.dll 内)

Microsoft.WindowsCE.Forms.dllというDLLアセンブリ内に存在していることを指しています。これらのクラスを使うには,Microsoft.WindowsCE.Forms.dllを参照する必要があります。

ソリューション エクスプローラーのプロジェクト以下にある参照設定を右クリックして,ポップアップから参照の追加を選択します。

図1 参照の追加

図1 参照の追加

参照の追加ダイアログが立ち上がりますので,.NETタブからMicrosoft.Windowsce.Formsを探して選択してください。

図2 ⁠参照の追加]ダイアログ

図2 [参照の追加]ダイアログ

参照設定にMicrosoft.Windowsce.Formsが追加されているのを確認します。

図3 Microsoft.Windowsce.Formsの確認

図3 Microsoft.Windowsce.Formsの確認

著者プロフィール

和田健司(わだけんじ)

1982年10月12日生まれ。大阪で働くプログラマ。Microsoft MVP for Device Application Development(Jul 2010 - Jun 2011)。Windows Mobileに傾倒し今に至る。Windows Mobile向けのTipsを書いています。iPhoneアプリ開発を始めました。嫌いな食べ物はカレー。

URL: http://ch3cooh.jp/
Blog: http://d.hatena.ne.jp/ch3cooh393/

コメント

コメントの記入