按钮单击以打开新表单,如果已经有活动表单正在运行,则不要打开

Posted

技术标签:

【中文标题】按钮单击以打开新表单,如果已经有活动表单正在运行,则不要打开【英文标题】:Button click to open new form and don't open if already have active form running 【发布时间】:2018-07-02 05:08:30 【问题描述】:

我有一个按钮点击事件,它会弹出一个表单。如何在创建并显示现有表单之前检查它是否已经存在?

这是我的代码

private void Button_Click(object sender, RoutedEventArgs e)

        Wizard wizard = new Wizard();

        if (wizard.IsVisible)
        

        
        else
        
            wizard.Show();
        
    

这里的代码不起作用,因为每次我从另一个窗口单击按钮时都会创建一个新的弹出向导(表单)。

【问题讨论】:

近乎重复:***.com/questions/3861602/… 在显示表单时禁用按钮并在关闭表单时重新启用它会更加用户友好。 【参考方案1】:

使用ShowDialog 并使其成为模态

或使用对wizardbool 标志的引用进行检查。确保你之后是否使用引用来设置它null

bool isOpen;

...

public void click()
     
    if (!isOpen)
    
        // do something
        wizard = new Wizard();
        wizard.Closing += (sender, args) =>
                            
                                isOpen = false;
                            ;
        isOpen = true;
        wizard.Show();
    
...

或如 cmets 中所述。将按钮的 Enabled 属性设置为 false 以防止进一步点击

Enabled = false; 

【讨论】:

以上是关于按钮单击以打开新表单,如果已经有活动表单正在运行,则不要打开的主要内容,如果未能解决你的问题,请参考以下文章

单击onclick按钮时如何添加新表单或div

以角度形式修补值

isValid 表单验证然后运行一个函数 AngularJS

推送通知上的应用程序重新加载单击 Xamarin 表单

如何在VB中打开一个新表单但关闭旧表单

在单击 Wordpress 按钮旁边打开 Mailchimp 订阅表单