libro
www.tuyano.com
初心者のためのWindows Phoneプログラミング入門

さまざまなプロパティの操作 (1/5)

作成:2011-09-12 07:55
更新:2011-09-12 07:55

■位置と大きさはMarginで決める

前回、プロパティの簡単な利用例として、Heightを使ってボタンの縦幅を操作しました。この時に、HeightWidthで大きさを設定できることがわかりました。「じゃあ、位置は?」と思った人も多かったことでしょう。

実際に、Visual Studioでコントロールのプロパティを調べてみると、位置を示すようなプロパティがないことに気がつくはずです。LeftとかTopとか、XとかYとか、とにかくそういった感じのプロパティはありません。一体、どうやって位置が設定されているのでしょうか。

実は、「位置を示すプロパティ」というのはないのです。ではどうやってコントロールの配置場所が決められるのか。それは「マージン」の指定によって、なのです。――マージンというのは、「余白幅」のことです。つまり、周りのものとどれだけ離して配置するかを示すものですね。このマージンによって、コントロールの配置は決められます。

実際に、Visual Studioで何かのコントロールを選択し、プロパティを調べてみましょう。「Margin」というプロパティに、4つの数値をカンマで区切って並べたような値が設定されていることがわかるはずです。これは、この部品の左側・上側・右側・下側のマージンをそれぞれ指定したものなのです。

「じゃ、このMarginをプログラムの中から設定する場合は、テキストで値を指定するのか」と思った人。いえいえ、そうではありません。これは、ただ単に値がそう表示されている、というだけで、「こういう値に設定する」ということとは別です。実際、Marginの値を編集しようとすると、4つの値をそれぞれ入力する小さなパネルがポップアップして表示されることがわかります。あくまで「4つの値の組み合わせ」としてMarginは設定されているのです。テキストではありません。

では、プログラム内ではこのMarginはどんな値になっているのか。それは「Thickness」という値を使うのです。このThicknessは、System.Windowsパッケージに用意されている構造体です。4つのマージン値を保持することができるように設計されています。この値を使ってMarginは設定されるのです。

下のリスト欄に、簡単な利用例を挙げておきます。TextBoxtextBox1)とButtonbutton1)がページに配置されており、button1Clickイベントに下リストのメソッドを設定します。ここでは、以下のようにしてThickness構造体を作成していますね。
Thickness margin = new Thickness(n, n, n, n);
new Thicknessを呼び出しています。引数には、左・上・右・下の各方向のマージンが指定されます。そして、これをbutton1Marginプロパティに設定すれば完了です。

実際に試してみると、Marginでマージンを変更すると、ボタンの輪郭線が切れてしまったりすることでしょう。このMarginで設定されるのは、あくまで「余白幅」です。コントロールのサイズが直接操作されるわけではないのです。したがって、大きさを変更する場合は、Marginとは別にWidth/Heightで幅を設定して必要があります。
(by. SYODA-Tuyano.)

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

private void button1Click(object sender, RoutedEventArgs e)
{
	String str = textBox1.Text;
	double n = Double.Parse(str);
	Thickness margin = new Thickness(n, n, n, n);
	button1.Margin = margin;
}

※関連コンテンツ

「初心者のためのWindows Phoneプログラミング入門」に戻る