代码之家  ›  专栏  ›  技术社区  ›  Agnel Kurian

暂时隐藏模态对话框

  •  0
  • Agnel Kurian  · 技术社区  · 16 年前

    dialog.ShowDialog(mainAppWindow)

    编辑:

    6 回复  |  直到 16 年前
        1
  •  15
  •   Ed Swangren    16 年前

        2
  •  3
  •   Hans Passant    6 年前

        3
  •  2
  •   Igor Brejc    16 年前

    看一看 http://en.wikipedia.org/wiki/Modal_window#Criticisms …有一种观点认为,你一开始就不应该使用模态窗口。

        4
  •  1
  •   grover    16 年前

    您需要再次启用父窗口。对于模态对话框,如果模态对话框关闭,Windows会自动禁用父窗口并重新启用它。

        5
  •  0
  •   LukáÅ¡ RubeÅ¡    15 年前

    我有一个显示模态对话框的(主)窗体,我需要隐藏它,与主窗口交互,然后再次返回模态对话框。

    整个技巧在于在显示模态对话框之前将主窗体设置为禁用(当主窗体未显式设置为Enabled=false时,隐藏模态对话框后,即使调用了Enabled=true,也无法与之进行交互)。

    void ShowDialog()
    {
      var dialog = new MyModalForm();
      dialog.NeedInteraction += (sender, eventArgs) =>
      {
        dialog.Hide();
        Enabled = true;
    
        //wait till user finishes working with main window
    
        Enabled = false;
        dialog.Show();
      }
    
      Enabled = false;
      dialog.ShowDialog();
      Enabled = true; //don't forget to make it enabled afterwards
    }
    

        6
  •  0
  •   Crono    10 年前

    模态/非模态范式是,如果你想让用户能够与主应用程序交互,请使用非模态窗口,如果你不想,请使用模态。如果你想阻止他使用主应用程序,然后使用它,然后不使用它,那么你的用户界面设计就不适用于模态/非模态范式。