C#メモ 表示しているFormの種類をNameプロパティを使って判別してみる

C#

野暮用で。
ポイントとしてはこんな感じやと思う。

  • FormのNameプロパティを固有のものにしておく
  • Application.OpenFormsプロパティで表示しているFormが入ったコレクションをとる
  • FormオブジェクトのNameプロパティを調べる

まず、Application.OpenFormsプロパティを使うには、このnamespaceがいるっぽい。

using System.Windows.Forms;

んで、Formの種類をNameプロパティを使って判別するコードはこんな感じ。
結果は判別したFormの数をダイアログで表示することで確認しとく。
int count_first = 0;    // FormFirstの数
int count_second = 0;    // FormSecondの数

// 表示しているFormをOpenFormsプロパティからとってきて
// Form毎に数を数える
foreach (Form form in Application.OpenForms)
{
	// NameプロパティがFormFirstの場合
	if (form.Name == "FormFirst")
	{
		count_first++;
		continue;    // 続けても意味なさそうなので次へ
	}
	// NameプロパティがFormSecondの場合
	if (form.Name == "FormSecond")
	{
		count_second++;
		continue;    // 続けても意味なさそうなので次へ
	}
}

// 数えた結果をダイアログで表示する
string message = "";    // ダイアログに表示する文字列
message += string.Format("FormFirst count is : {0}\n", count_first);
message += string.Format("FormSecond count is : {0}", count_second);
MessageBox.Show(message);

んで、動かしてみるとこんな感じ。
Firstってフォームを2つ、Secondってフォームを1つ表示しておいて、こいつらを数える。

23378_04

この状態でフォームの数を数えたらこんな感じ。
FormFirstは2個、FormSecondは1個ってちゃんと出とる。

23378_05

ちなみに、準備としてはこんなFormを作って試した。

まずは、メインにするForm。
メインにするフォームには3つのボタンを作っとく。

23378_01

ボタンの動きはこんな感じ。

  1. “Show First"ボタンはFirstってフォームを表示する。
  2. “Show Second"ボタンはSecondってフォームを表示する。
  3. “Check"ボタンはこの記事の最初のコードを呼び出す。

んで、FormFirstってフォームはこんなん。
NameプロパティはFormFirstって文字列を設定しとく。

23378_02

んで、FormSecondってフォームはこんなん。
NameプロパティにFormSecondって文字列を設定しとく。

23378_03

ちなみに、Nameプロパティはここにある。

23378_06

んま、メモってことで。