2012-04-19 84 views
1

在窗体中我有一个按钮,它具有从(通过鼠标单击)拾取一些数据的功能 父应用程序。等待无模式对话框关闭vb.net

我有处理父应用程序句柄,但即使我试图把它放在上面我不能做选择,因为窗体是模态的。

此处的要求是打开无模式对话框并等待它关闭。其他明智的是它进一步并执行下面的功能。

另一个选项可以是打开窗体为模态,并在运行时将其更改为无模

但是怎么做呢? :)

+0

注意:模式不是型号 – Reniuz 2012-04-19 12:44:08

+0

这些窗口是同一个应用程序吗?你的描述有些含糊,说明它可能意味着单独的过程。 – 2012-04-19 12:50:30

+2

它可能是'模态',但它绝对是'无模式'。 – 2012-04-19 12:54:02

回答

3

假设WinForms ...当你创建对话框时,钩入它的FormClosed事件。关闭时,此事件将触发,并且您的原始表单将被通知(假设事件处理程序处于原始形式)。

喜欢的东西:

class MainForm : Form 
{ 
    private ChildForm _childForm; 

    public void ShowChildForm() 
    { 
     _childForm = new ChildForm(); 
     _childForm.FormClosed += (s, e) => MessageBox.Show("Child was closed."); 
     _childForm.Show(); 
    } 
} 

这就是说,如果你需要等待直到它关闭,那么这听起来很像一个模式对话框:

_childForm.ShowDialog(); 

哪将阻止主窗体直到子窗体关闭。不需要关闭关闭的事件。

+0

_childForm.FormClosed + =(s,e)如果孩子关闭,如何在父级添加事件处理程序? – Sandip 2012-04-19 12:51:43

+0

无法使用_childForm.ShowDialog();直接是因为我有一个按钮,它具有从(通过鼠标单击)父应用程序获取一些数据的功能。 – Sandip 2012-04-19 12:52:22

+0

我不确定你点击鼠标的意思,你可以发布一些代码来说明为什么你不能使用ShowDialog?这是在这种情况下使用的标准方法。 – 2012-04-19 12:54:57

-1

你的问题没有做出完整意义上的,而是试图回答这么远

可以使用

Form1.ShowDialog 

显示一个模式对话框如果再需要出示另一模态对话框,你可以做这样的:

Form2.ShowDialog 

不能显示非模态对话框模式显示的是当前电流。