2012-04-19 80 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 

不能顯示非模態對話框模式顯示的是當前電流。