2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

調子乗り気味でWPFのWindowを開く

Last updated at Posted at 2019-02-14

下記のようなアプリがあるとする。

・メニュー画面がある。
・そのメニューに複数のボタンがある。
・各ボタンを押すと、それぞれ別のWindowが立ち上がる。

#調子に乗る前の俺が書いたコード

// Window○○ は、自前のWindowクラス。

private void Button01_Click()
{
    var w = new Window01();
    w.Show();
}

private void Button02_Click()
{
    var w = new Window02();
    w.Show();
}

private void Button03_Click()
{
// 以下略

行数を節約するなら

new Window01().Show();

って書けば1行で書けるし、それでいいのかもしれない。

#調子に乗った俺が書いたコード

// Window○○ は、自前のWindowクラス。

/// <summary>
/// ウインドウを開く
/// <summary>
private void OpenWindow<T>() Where T : Window, new()
{
    var w = new T();
    w.Show();
}

private void Button01_Click()
{
    OpenWindow<Window01>();
}

private void Button02_Click()
{
    OpenWindow<Window02>();
}

private void Button03_Click()
{
// 以下略

Windowを開くメソッドが書きたかった。
だけど、インスタンスを生成してそのメソッドに渡すなら意味がない(Showすればいいだけだから)。
クラスを渡したら、メソッド内でインスタンスを生成して開いて欲しかった。

できたんだけど、インスタンス生成してShowする方が、シンプルでわかりやすくて良いのでは?という考えが消えない。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?