工程有2个窗体:form1 和 form2
=====================================
form1的代码(启动窗体):Private Sub Form_Load() '启动时 form2 隐藏
Form2.Hide
End Subfrom2 的代码:有1个timer1 ,Interval=5000 5秒Private Sub Timer1_Timer()
Me.Show ‘显示出form2
End Sub
======================================
现在的问题是:
当 form1 被其他窗口挡住的时候(不可见,但不是visible=false),form2弹出的时候,form1也会被激活显示出来。
如何才能使form2运行的时候,form1不被激活。同时form1不能hide,不能最小化。
=====================================
form1的代码(启动窗体):Private Sub Form_Load() '启动时 form2 隐藏
Form2.Hide
End Subfrom2 的代码:有1个timer1 ,Interval=5000 5秒Private Sub Timer1_Timer()
Me.Show ‘显示出form2
End Sub
======================================
现在的问题是:
当 form1 被其他窗口挡住的时候(不可见,但不是visible=false),form2弹出的时候,form1也会被激活显示出来。
如何才能使form2运行的时候,form1不被激活。同时form1不能hide,不能最小化。
sub main()
load form2
end sub然后工程属性设置从sub main启动, 随便你想先显示哪一个窗体都行.还有一种方法就是直接设置工程属性让form2为启动窗体.
form2显示的时候,还是会激活form1。
你把F2设为独立的窗体,那样在F1里面也不必用Form2.Hide了,因为只要不加载,F2就不存在.
不加载form2,怎么运行form2的代码?form2有个timer的。
不管是show还是load,都得加载form2。form2默认是隐藏的(hide),通过timer1才显示出form2.现在的问题是:form2显示的时候,会激活from1的界面,而我们要做的是如何不激活form1(这是我的问题)form2 并不是form1的子窗体,是独立的。
你重建一个新的测试工程试试:两个窗体模块,一个标准模块。在标准模块 Main() 中显示 Form2。
Form1 被其他窗口挡住的时候,等于当前活动程序是其他某个程序。
Form2 弹出是,当前活动程序就变成你的程序,该程序的所有的窗口都会排到其他程序的窗口之前。
难道真的没办法吗?
看过其他语言写的软件,似乎都能解决这个问题。难道vb是个例还是微软的语言都这样?期待有类似经验或者对此问题有兴趣的朋友给个其他解决方案。
记事本之打开两个文档,在任务管理器中可以看到两个 notepad.exe!而你的两个窗口是属于同一个 exe 的。
AisaC 先看清楚我的问题,代码我已经贴出来了,要达到的效果在下面的回复也讨论的比较清楚了。Tiger_Zhao 第一次的解答是我最困惑的,因为这已经做过无数次尝试了,找过、搜索过不少资源,也看到有人提示这个windows的限制等等。2个记事本,是不同的exe,或者exe允许重复启动(2个exe进程),不是一个exe的2个不同的窗体。
我要的一个exe2个不同的窗体,而且是根据timer启动的。
假如你还有第三个窗体form3,form3是启动后就运行的,form3调用form1内的代码来控制timer1是否可用,这样才可以实现。如果没有第三方的窗体或者是一个线程,这个问题应该不能实现。
另外通过sub main 来load或show这几个窗体都和上面是一个效果。注意:form1的是主窗体,他的状态是可见的,只是我们点了屏幕或者点了其他应用程序造成了软件(form1)被其他程序遮挡住了,form1状态不是visile=false 也不是 hide 也不是最小化 。c_cyd2008:的方法某种程度上有可行的,只有在确定这确实是vb无法解决的才能用这方法。
我曾尝试用判断form1是不是被其他窗口挡住的方式来写代码。如果form1被其他窗口挡住,form1就最小化,form2再show,但是需要考虑情况太多,似乎也不是最完美的。这个问题暂不考虑。of123:没发现我的说的问题,那应该你没看清楚我的问题。当然我现在无法确定是不是微软的限定,所以我们才有了上面的讨论。