C#メモ 表示しているFormの種類をNameプロパティを使って判別してみる
野暮用で。
ポイントとしてはこんな感じやと思う。
- 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つ表示しておいて、こいつらを数える。
この状態でフォームの数を数えたらこんな感じ。
FormFirstは2個、FormSecondは1個ってちゃんと出とる。
ちなみに、準備としてはこんなFormを作って試した。
まずは、メインにするForm。
メインにするフォームには3つのボタンを作っとく。
ボタンの動きはこんな感じ。
- “Show First"ボタンはFirstってフォームを表示する。
- “Show Second"ボタンはSecondってフォームを表示する。
- “Check"ボタンはこの記事の最初のコードを呼び出す。
んで、FormFirstってフォームはこんなん。
NameプロパティはFormFirstって文字列を設定しとく。
んで、FormSecondってフォームはこんなん。
NameプロパティにFormSecondって文字列を設定しとく。
ちなみに、Nameプロパティはここにある。
んま、メモってことで。
ディスカッション
コメント一覧
まだ、コメントがありません