2011-06-20 154 views
1

即時通訊有一個類似的問題,像這裏的解決方案Prevent main form from appearing when showing another form。但一些建議是最大限度地減少主應用程序,所以它不顯示,我不能做,因爲我的主要應用程序應該是一個桌面,在所有其他應用程序的下面,以取代Windows桌面。第二種形式應該是粘滯便箋。所以我不能最小化主窗口,因爲它有用戶背景和其他控件。我試圖使筆記的父母沒有指針,指向桌面的指針,通過DLL創建表單,但我沒有成功。vb.net防止表單1被激活當表單2被點擊

我的主要問題是,當我點擊一個音符(form2)form1時,即使form1在createparams中有WS_EX_NOACTIVATE。 form1執行form2.show(),但不應附加它們。

另一個原因,即在該帖子中預先解決的問題是,他們是爲delphi和即時通訊在vb.net做。

我所需要的是能夠點擊控件並在筆記中寫入主要形式的筆記中。或者使它們獨立,或者使筆記不聚焦第一種形式,或者在沒有激活的情況下能夠操作筆記。我不知道。我的最後一個資源是將我的主窗體附加到桌面上,但我聽說是最糟糕的事情,因爲它可能會導致掛起系統的問題。

+0

我不是100%肯定,我跟着你但現在看來,Form1將在顯示顯示form2之前的背景?如果是這樣,你有沒有嘗試在調用Form2.Show()之前設置Form1.Visible = False或Form1.Opacity = 0? –

+0

好的,讓我澄清一下。 form1是位於桌面上的最大化邊界形式。要做到這一點,我使用了API setPosition並將它發送到Zlayer的後面並放置了noactivate選項。之後,我從form1創建form2並執行.show()。一切正常,直到現在。但只要我點擊form2,form1就會以form2來到前臺。 form2仍然在form1之上,所以我可以看到form2,但form1現在已經覆蓋了所有其他類似word的應用程序。我可以alt標籤再次看到他們,但我不想form1永遠不會到前臺。我想要一個AlwaysOnBottom選項將其粘貼到桌面上。 – superjugy

+0

您可能需要考慮稍微改變一下設計,並讓form2成爲一個單獨的可執行文件,即form1 shell。您可以重定向標準輸入/輸出以與form2進程交互。 –

回答

0

如果你想要兩個表單共存,但不要互相干擾:在這種情況下,你可能想要第三個Form來調用Form1和Form2來打開,然後讓我建議和MDI窗體與Form1和Form2作爲兒童形式的MDI表格

'==============我以前的帖子============= =========== 您可以強制用戶首先關閉Form2,然後通過將Form2顯示爲模態窗體讓他回到form1。這裏是如何顯示窗體2,模式

Dim f2 as New Form2 
f2.ShowModal() 

如果還是不行,請嘗試以下

Dim f2 as New Form2 
f2.Show(True) 
+0

form2不應該被解僱,是一個粘滯便箋,應該掛在桌面下的所有其他程序。即時嘗試替換一個新的Windows桌面。 – superjugy

+0

我試過了。我有一個mainForm,它創建了一個desktopForm並對它執行.show(),然後創建了一個noteForm和.show()它。主窗體被最小化了,它沒有任務欄,所以它是隱形的。當我登錄noteForm時,desktopForm與音符一起到達前臺。它留在筆記後面,但仍然覆蓋所有其他應用程序,包括任務欄。 – superjugy

+0

即時通訊的思想mdi的實現,但那麼我怎麼能保持主要的mdi窗體或父窗口堅持到桌面? – superjugy

相關問題