Home > C# > WPF

ベクトルドロー・レベルゼロ

最小のWPFアプリケーションを作成する

広告

新規作成日 2018-10-02
最終更新日

WPFの解説書やインターネット上のドキュメントで、最小のWPFアプリケーションというものが存在します。

// MyApp.cs
using System;
using System.Windows; // the root WPF namespace ルートのWPF名前空間

namespace MyFirstWpfApp
{
	class MyApp
	{
	   [STAThread] 
	   static void Main() 
	   { 
		// the WPF message box WPFのメッセージボックス
		MessageBox.Show("Hello, WPF"); 
		}
	}
}

[Cbris Sells, Ian Griffitbs]Programming WPFより

類似のコードを良く見かけるので、おそらく有名なコードと思われるのですが、このコードをどうやって実行したら良いのか、わたしは、ずっとわかりませんでした。

最近、その実行方法について、説明がある書籍を見つけました。

[Charles Petzold]APPLICATIONS=CODE+MARKUP

その書籍内の説明を元にこのプログラムを実行して見ようと思います。

C#の不可解なライブラリの参照

C#で、書籍やmsdnなどインターネット上のサンプルコードを実行しようとすると、実行できないことがあります。C#の知識が技能が十分でなければ、実行できない原因の対処ができないため、そのサンプルコードの実行や理解を諦めるしかありません。

その原因の多くは、C#のライブラリ参照にあると思います。C#で利用するライブラリは、usingディレクティブで指定します。しかし、それだけでは、使えない場合があります。使えない場合は、ソリューションエクスプローラーの参照から、参照を追加する必要があります。

ソリューションエクスプローラーの参照

追加する参照が一覧に存在しなければ、Nugetライブラリから、使用するライブラリやツールキットをインストールする必要があります。インストールして、参照の一覧に追加された参照は、はじめから一覧にあったのか、何らかのライブラリやツールキットをインストールする事で使えるようになったのかを簡単に判断する方法はありません。

その問題を回避する仕組みが、プロジェクト・テンプレートです。プロジェクト・テンプレートごとに、必要な参照が追加された状態で利用できます。

しかし、サンプルコードには、どのプロジェクト・テンプレートを使って作成したのか、どの参照を使ったのか、追加のライブラリやツールキットのインストールが必要なのかの情報は、ほとんど併記されていません。サンプルコードを作成した人もそれを簡単に確認する方法がありません。

結果として、C#を学ぼうとする人がサンプルコードを見つけても、そのコードを実行できる状態にできないことがよくあります。ソースコードとして配布されているものは実行できても、自分で同じように作ったコードは実行できないことは頻繁にあり、C#の学習を難しくしています。

テンプレートもVisual Studioのバージョンにより、微妙に変化するので、Visual Studioのバージョンを変更すると動かない場合があります。自分がプログラミングする環境で実行する方法を見つけることができなければ、意味がありません。

プログラムを実行する

先に紹介した、「最小のWPFアプリケーション」を自分で入力して実行してみることにします。

Visual Studio Community 2017を使って作成しています。

「ファイル」、「新規作成」、「プロジェクト」を選択します。

「ファイル」、「新規作成」、「プロジェクト」を選択します。

「Visual C#」、「Windowsデスクトップ」、「空のプロジェクト(.Net Framework)」を選択します。名前とプロジェクトの場所は、適切なものを入力して下さい。

「Visual C#」、「Windowsデスクトップ」、「空のプロジェクト(.Net Framework)」を選択します。名前とプロジェクトの場所は、適切なものを入力して下さい。

右側のソリューション・エクスプローラの参照の項目で、右クリックし、参照の追加を選択します。

右側のソリューション・エクスプローラの参照の項目で、右クリックし、参照の追加を選択します。

アセンブリを選択し、PresentationCore、PresentationFramework、System、およびWindowsBaseの項目にチェックを入れます。

アセンブリを選択し、PresentationCore、PresentationFramework、System、およびWindowsBaseの項目にチェックを入れます。

ソリューション・エクスプローラー上のプロジェクトで、右クリックし、「追加」、「クラス」を選択します。

ソリューション・エクスプローラー上のプロジェクトで、右クリックし、「追加」、「クラス」を選択します。

名前を指定して、クラスを追加します。

名前を指定して、クラスを追加します。

作成したクラスにコードを入力します。

// MyApp.cs

using System;
using System.Windows;   // the root WPF namespace ルートのWPF名前空間

namespace MyFirstWpfApp
{
    class MyApp
    {
        [STAThread]
        static void Main()
        {
            // the WPF message box WPFのメッセージボックス
            MessageBox.Show("Hello, WPF");
        }
    }
}
ディバッグ・メニューからディバッグなしで開始を選択し(あるいは、Ctrl + F5を押す)、プログラムをコンパイルして実行します。

ディバッグ・メニューからディバッグなしで開始を選択し(あるいは、Ctrl + F5を押す)、プログラムをコンパイルして実行します。

ダイアログボックが表示されます。OKをクリックします。

ダイアログボックが表示されます。OKをクリックします。

コンソールにメッセージが表示されます。何かキーを押すとアプリケーションが終了します。

コンソールにメッセージが表示されます。何かキーを押すとアプリケーションが終了します。

コンソール・ウィンドウの存在は、プロジェクトのプロパティのコンパイラ・フラグによって制御します。

このプログラムでは、コンソール・ウィンドウも実行されています。 このコンソール・ウィンドウの存在は、プロジェクトのプロパティのコンパイラ・フラグによって制御します。 変更するには、ソリューション・エクスプローラーから、プロジェクト名をクリックし、プロパティを選択します。

出力の種類に、コンソールアプリケーションが表示されていると、コンソール出力が行われ、Windowsアプリケーションが選択されていると、コンソール出力は行われません。

出力の種類に、コンソールアプリケーションが表示されていると、コンソール出力が行われ、Windowsアプリケーションが選択されていると、コンソール出力は行われません。

プロクラム開発時に、コンソール出力を行うと、プログラムの進行をコンソールに表示するしたり、無限ループに入ったときに、コンソールウィンドウで、Ctrl+Cを入力することで、アプリケーションの実行を中断することができるなど、有効に活用することができます。ただ、アプリケーションが完成した際に、コンソール出力を行わない状態に変更してから、配布するように注意しましょう。

WPFアプリケーションを作成する場合、通常は、プロジェクトテンプレートに、「WPFアプリ(.NET Freamework)」を使います。しかし、実行したいコードが以下の形式である場合、今回紹介した方法を使います。

	   [STAThread] 
	   static void Main() 
	   { 
		// アプリケーションの処理
	}
このエントリーをはてなブックマークに追加

広告

Home PC C# Illustration

Copyright (C) 2011-2018 Horio Kazuhiko(kukekko) All Rights Reserved.
kukekko@gmail.com
ご連絡の際は、お問い合わせページのURLの明記をお願いします。
「掲載内容は私自身の見解であり、所属する組織を代表するものではありません。」