.Net(VB、C#)のWPFでマウスホイールに連動してフォントサイズを変更する

[Control]キーが押された状態でのマウスホイールの回転に連動してフォントサイズを変更する。

また、フォントサイズに連動したグリッドの動きを確認する。

 

 

.NetのWPFにおけるテキスト入力UI要素

文字列の選択

<TextBox>要素および<RichTextBox>要素では、テキストボックス内で選択されている文字列に関する情報を、SelectionStartプロパティ、SelectionLengthプロパティ、および、SelectedTextプロパティを通して取得できる。

尚、AutoWordSelectionプロパティに「true」を設定することで、マウスでドラッグした際に単語単位で文字列選択されるよう、選択範囲が自動調整されるようになる。

複数行のテキスト

<TextBox>要素内で複数行のテキストを表示したい場合には、TextWrappingプロパティに「Wrap」を設定する。

複数行テキストを表示する際、MinLinesプロパティおよびMaxLinesプロパティを設定しておくと、実際の行数が変わる場合にも表示上のサイズを固定することができる。

また、[Enter]キーで改行を入力したい場合には、AcceptsReturnプロパティに「true」を設定する。

スペルチェック

その他、WPFにはスペルチェック機能があり、<TextBox>要素や<RichTextBox>要素のSpellCheck.IsEnabled添付プロパティに「true」を設定することで、スペルチェックが働くようになる。

 

.NetのWPFにおけるボタンUI要素

ButtonBaseクラス

ButtonBaseクラスのClickModeプロパティを設定することで、Clickイベントが発生するタイミングを「Release」(=ボタンを押して離したとき)、「Press」(=ボタンを押したとき)、「Hover」(=ボタンの上にマウス・カーソルを載せたとき)の3つの中から選べる。

Buttonクラス

Buttonクラスでは、IsDefaultプロパティに「true」を設定することで、デフォルトボタン(=WindowsフォームでのAcceptButton。[Enter]キーを押したときにClickイベントが発生する)に、IsCancelプロパティに「true」を設定することでキャンセルボタン(=同、CancelButton。[Escape]キーを押したときにClickイベントが発生する)にすることができる。

ToggleButtonクラス

ToggleButtonクラス(System.Windows.Controls.Primitives名前空間)は、オン/オフの2つの状態を表すクラスであるが、IsThreeStateプロパティがtrueの場合、オン/オフ/未設定の3つの状態(=IsCheckedプロパティがfalseのときとnullのときで異なる表示が行われる)を表すことも可能である。

 

.Net(VB、C#)のWPFで半透明ウィンドウを作る

枠線なし、リサイズ可能、半透明のウィンドウを作る。

このようなウィンドウを作った場合、タイトルバーが存在しないため、そのままではドラッグによるウィンドウの移動ができない。

ウィンドウの移動を可能にしたい場合は、マウスクリックイベントのハンドラにDragMoveメソッドを呼び出すコードを記述する。

また、キー入力イベントのハンドラにCloseメソッドを呼び出すコードを記述すれば、任意のキーが入力された時にウィンドウを閉じるようにできる。

 

 

.Net(VB、C#)でLinq to XMLを利用してXMLを操作する

XMLドキュメントを簡単かつ効率的に作成・参照・更新できるようにするLinq to XMLを利用してXMLファイルを操作する。

 

using句の指定(C#の場合)

using句でLinq to XMLの名前空間を呼出しておく。

尚、Visual Studioのソリューションエクスプローラで参照設定を確認し、System.XML.Linqの参照設定がない場合には追加する。

 

単純なXMLの表示

簡単なXMLのデータを作成し、コンソールに表示する。

Nameという1種類の要素を持つXMLデータを作成し、コンソールに表示している。

Linq to XMLにおいて、XElementクラスがXML要素を表すクラスになる。

尚、Linq to XMLの各クラスは先頭に”X”がつく。

 

XML要素に属性を追加して表示

XML要素に属性(Attribute)を追加する。

XElementクラスのコンストラクタの中でXAttributeクラスを初期化し、IDという属性とその値として”99999″を追加する。

Name要素にID属性が追加され、その値が”99999″となっている。

 

XElementクラスのAddメソッドを使用して属性を追加

XElementクラスのAddメソッドを使用して、XML要素に属性(Attribute)を追加する。

 

XML文書を作成する

Linq to XMLでXML文書(XML Document)を表すクラスはXDocumentクラスになる。

上記はXDocumentクラスのコンストラクタですべてを記述している。

この程度であれば問題ないが、これ以上大きなXML文書を扱うには視認性が悪い。

尚、途中に出てくるXDeclarationクラスはXML宣言のクラス。

 

XML文書を作成する(ノードごとに記述)

コードの視認性を良くする為にノードごとにXML要素を追加する。

XML宣言を表すXDeclarationクラスのインスタンスはXDocumentクラスのコンストラクタの引数に渡す必要がある。

後からXDocumentクラスのAddメソッドで追加することは出来ない。(実行時エラーとなる)

また、XCommentクラスを使用するとXMLコメントを追加することが出来る。

 

XML文書の保存

XML文書を保存するにはXDocumentクラスのSaveメソッドを使用する。

上記の他にXMLWriterに渡して非同期で出力する方法、TextWriterに渡して同じく非同期で出力する方法、出力時に空白を削除する/しないのオプションがある。

 

XMLファイルの読込み

XMLファイルからデータを読込むには、XDocumentクラスのLoadメソッドを使用する。

LoadメソッドもSaveメソッドと同様にオーバーロードされたメソッドがあり、URI指定によるXMLファイルの読込みやXMLReader、TextReaderからの読込みがサポートされている。

 

クエリ式を使用したLINQの記述

Linq to XMLなので勿論、LINQによるXML要素の取得が可能。

LINQの基本的なクエリ式は、以下の通り。

クエリ式はまず、from句から始める必要がある。

次に最低でもselect句で範囲変数を指定し、最終的に式が返すソースシーケンスの内容を確定する。

from句
from [範囲変数] in [データソース]

from句ではクエリもしくはサブクエリの対象となるデータソースとソースシーケンス内の各要素を表すローカルの範囲変数を指定する。

尚、ソースシーケンスとはデータソースの中でクエリ式内での各操作の対象となる連続したデータのこと。

LINQのデータソースにはIEnumerable<T>インターフェイスあるいはIEnumerableとその派生インターフェイスを実装したオブジェクトだけを指定することができる。

通常の配列やArrayList、ADO.NETのデータセットはIEnumerableインターフェイスを持つ為、LINQの対象とすることができる。

selsct句
select [式]

selsct句はクエリ式が実行されたときに生成される値の型を指定する。

クエリ式の結果はselect句の前の式の評価およびselect句の式の評価によって生成される。

select句の一番単純な例は式に範囲変数を指定し、ソースシーケンスをそのまま式の値とする方法。

where句
whewe [条件式]

where句を利用することで、ソースシーケンスのデータに対して何らかのフィルタリング条件を付けて必要なデータだけを取得することが出来る。

通常、特定の要素を検索対象とするには正確に木構造を辿る形で指定していく必要がある。

しかし、Linq to XMLではDescendantsで要素名を指定すれば木構造を辿らずダイレクトに指定する事が出来る。

上記は、ID属性が”88888″のユーザ情報をコンソールに表示している。

 

メソッドベースでのLINQの記述

メソッドベースでもLINQの記述が可能。

上記は、ID属性が”99999″のユーザ情報をコンソールに表示している。