Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在WPF中不打开多个窗口_C#_Wpf_Button_Dialog - Fatal编程技术网

C# 如何在WPF中不打开多个窗口

C# 如何在WPF中不打开多个窗口,c#,wpf,button,dialog,C#,Wpf,Button,Dialog,在我的WPF应用程序中,我使用以下代码从按钮打开新窗口: private void LoginBtn_Click(object sender, RoutedEventArgs e) { LoginDialog dialog = new LoginDialog(); dialog.Show(); } 但是当已经有一个LoginDialog打开时,我再次单击LoginBtn,它会打开一个新的LoginDialog窗口。如何对其进行编码,使其覆盖上一个打开的变量(如果有)。您

在我的WPF应用程序中,我使用以下代码从按钮打开新窗口:

private void LoginBtn_Click(object sender, RoutedEventArgs e)
{
    LoginDialog dialog = new LoginDialog();
    dialog.Show();    
}

但是当已经有一个LoginDialog打开时,我再次单击LoginBtn,它会打开一个新的LoginDialog窗口。如何对其进行编码,使其覆盖上一个打开的变量(如果有)。

您可以创建Login dialog类型的局部变量,并检查其是否为null

LoginDialog _dialog;

private void LoginBtn_Click(object sender, RoutedEventArgs e)
{
    if(_dialog == null)
    {
        _dialog = new LoginDialog();
     }
    _dialog.Show();    
}

您可以创建Login dialog类型的局部变量,并检查其是否为null

LoginDialog _dialog;

private void LoginBtn_Click(object sender, RoutedEventArgs e)
{
    if(_dialog == null)
    {
        _dialog = new LoginDialog();
     }
    _dialog.Show();    
}
使用
ShowDialog()
而不是
Show()
使对话框成为模态(这样,当对话框打开时,您就不能执行任何其他操作)

这还允许您获取返回值,指示用户(即)是按了cancel还是ok

使用
ShowDialog()
而不是
Show()
使对话框成为模态(这样,当对话框打开时,您就不能执行任何其他操作)


这还允许您获取返回值,指示用户(即)是按了cancel还是ok

由于设计限制,您可能无法使用此窗口,但是您可以打开新窗口,以便禁用其他窗口

private void LoginBtn_Click(object sender, RoutedEventArgs e)
{
    LoginDialog dialog = new LoginDialog();
    dialog.ShowDialog();    
}

由于设计限制,您可能无法使用此窗口,但是您可以打开新窗口,使其禁用其他窗口

private void LoginBtn_Click(object sender, RoutedEventArgs e)
{
    LoginDialog dialog = new LoginDialog();
    dialog.ShowDialog();    
}
private void LoginBtn\u单击(对象发送者,路由目标)
{
LoginDialog\u dialog=Application.Current.Windows.OfType().FirstOrDefault()??new LoginDialog();
_dialog.Show();
}
私有无效登录单击(对象发送者,路由目标e)
{
LoginDialog\u dialog=Application.Current.Windows.OfType().FirstOrDefault()??new LoginDialog();
_dialog.Show();
}

Hi@PMF。我已经想到了这个解决方案,但是当这个窗口打开时,我必须能够使用我的主窗口。我已经想到了这个解决方案,但是当这个窗口打开时,我必须能够使用我的主窗口。没错,因此我提到,由于设计限制,它可能无法使用,但是我不知道他希望他的程序做什么…如果他想再次单击,他肯定希望访问,不是吗?他没有说,但他说目前这是可能的谢谢你们的责任,但我需要能够在当前窗口打开时使用我的主窗口。参见op对PMF的ans的评论,他明确地提出了同样的建议,因此,我提到,由于设计限制,它可能无法使用,但我不知道他希望他的程序做什么…如果他想再次单击,他肯定希望访问,不是吗?他没有说,但他说目前这是可能的。我感谢你们的责任,但是,当当前窗口打开时,我需要能够使用我的主窗口。请参阅op对PMF的ans的评论,他建议了相同的内容小更改:'='到'='小更改:'='到'='