2011-06-20 156 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

相关问题