WisdomSoft - for your serial experiences.

2.2 ウィンドウ

ウィンドウの制御方法を説明します。

2.2.1 タイトルの表示

ウィンドウを表している Window クラスのインスタンスは、1 つのインスタンスが 1 つのウィンドウに対応しています。Window オブジェクトを操作することで、画面上のウィンドウを移動させたり、何らかの視覚的な変化を与えることも可能です。

ウィンドウのタイトルバーに表示されている文字列は、Window クラスの Title プロパティから設定することができます。

Window クラス Title プロパティ
[LocalizabilityAttribute(LocalizationCategory.Title)] 
public string Title { get; set; }

Title プロパティに設定されている文字列が、そのままウィンドウのタイトルバーに表示されます。主要なウィンドウには、アプリケーションの名前やバージョンなどがタイトルバーに記載されるのが一般的です。その他、現在編集中のコンテンツの名前など、ウィンドウに関連付けられている何らかの情報を表示するためにも使うことができます。

コード1
using System;
using System.Windows;

class Test {
	[STAThread]
	public static void Main() {
		Window wnd = new Window();
		wnd.Title = "全て遠き理想郷";

		Application app = new Application();
		app.Run(wnd);
	}
}
実行結果
コード1 実行結果

コード1は、最初に Window オブジェクトを表示する前に Title プロパティに文字列を設定しています。実行結果を見れば、Title プロパティに設定している文字列がウィンドウのタイトルバーに表示されることを確認できます。

2.2.2 ウィンドウの枠

既定のウィンドウは、タイトルバーや最大化、最小化、閉じるなどの各種ボタン、ウィンドウのサイズを変更する境界線などが備え付けられています。このような既定のウィンドウの枠に関連する設定を変更するには WindowStyle プロパティを使います。

Window クラス WindowStyle プロパティ
public WindowStyle WindowStyle { get; set; }

WindowStyle プロパティに設定したり取得する値は System.Windows.WindowStyle 列挙体のメンバです。

System.Windows.WindowStyle 列挙体
public enum WindowStyle

枠やキャプションを持たないことを表す None、単一の枠を持つことを表す SingleBorderWindow、3D の枠を持つことを表す ThreeDBorderWindow、比較的小さなツールウィンドウを表す ToolWindow のいずれかのメンバを指定することができます。既定では SingleBorderWindow が設定されています。

図1 None ウィンドウ
図2 SingleBorderWindow ウィンドウ
図3 ThreeDBorderWindow ウィンドウ
図4 ToolWindow ウィンドウ
コード2
using System;
using System.Windows;

class Test {
	[STAThread]
	public static void Main() {
		Window wnd = new Window();
		wnd.WindowStyle = WindowStyle.ToolWindow;

		Application app = new Application();
		app.Run(wnd);
	}
}
実行結果
コード2 実行結果

コード2は、生成した Window オブジェクトの WindowStyle プロパティに ToolWindow を設定しています。このプログラムを実行すると、既定のウィンドウとは異なり、最大化や最小化ボタンを持たないツールウィンドウが表示されます。

2.2.3 最前面ウィンドウ

ウィンドウが他のウィンドウに隠された場合、より前面のウィンドウが背面のウィンドウを隠してしまいます。しかし、性質的に重要なウィンドウであったり、利便性の都合から他のウィンドウの背面に移動することが好ましく内容のウィンドウの場合、最善面ウィンドウとすることで、通常のウィンドウよりも常に前面に配置することができるようになります。

最善面ウィンドウを設定するには Topmost プロパティを設定します。

Window クラス Topmost プロパティ
public bool Topmost { get; set; }

Topmost プロパティが true の場合、ウィンドウは最前面ウィンドウとして表示され、常に他のウィンドウよりも手前に配置されます。

コード3
using System;
using System.Windows;

class Test {
	[STAThread]
	public static void Main() {
		Window wnd = new Window();
		wnd.Topmost = true;

		Application app = new Application();
		app.Run(wnd);
	}
}
実行結果
コード3 実行結果

コード3では、表示する Window オブジェクトの Topmost プロパティを true に設定しています。よって、実行して表示されたウィンドウは最前面ウィンドウです。他のウィンドウをアクティブにしても、ウィンドウは常に最前面に表示され続けます。一般的なウィンドウよりも優先度の高いウィンドウに設定することで、利便性を向上させることができるかもしれませんが、無意味に多用すると使い勝手が悪くなるだけなので、明確な設計思想を持って使うべき機能です。