3

WPF で自分の Window のインスタンスを 1 つだけ持ちたいのです。

ウィンドウ内の私のコード:

public static bool IsOpen { get; private set; }
private void Window_Loaded(object sender, RoutedEventArgs e)
{
    IsOpen = true;
}

private void Window_Unloaded(object sender, RoutedEventArgs e)
{
    IsOpen = false;
}

open 関数内の私のコード

if (MyWindow!= null)
{
    if (MyWindowName.IsOpen)
    {
        MyWindow.Activate();
    }
    else
    {
        MyWindow.Close();
        MyWindow= null;
    }
}
if (MyWindow!= null) return;

MyWindow= new MyWindowName();
MyWindow.Show();
MyWindow.Activate();

しかし、3 ~ 5 回すばやくクリックすると、ウィンドウの多くのインスタンスを開くことができます。

ありがとう

4

3 に答える 3

0

このシンプルなコードはどうですか。

  Window2 win;
        object locker = new Object();
        private void OnShow(object sender, RoutedEventArgs e)
        {
            lock (locker)
            {
                if (win == null)
                    win = new Window2();
                win.Show();
            }
        }

        private void OnHide(object sender, RoutedEventArgs e)
        {
            if (win != null)
                win.Hide();
        }
于 2013-06-20T14:21:05.913 に答える