读书人

一个VB Project 中怎样寻找form实例

发布时间: 2012-01-19 20:57:58 作者: rapoo

一个VB Project 中,怎样寻找form实例
在一个mdi 中,可以查找每个mdichild,但在普通的form中,怎样寻找form实例。
类似实现qq这样功能的,当判断到有发送人窗体时,就active,否则,则创建一个新的窗体。针对不同的发送人,创建多个窗体。(不是MDI)谢谢。

[解决办法]

引用楼主 Frewin 的帖子:
在一个mdi 中,可以查找每个mdichild,但在普通的form中,怎样寻找form实例。
类似实现qq这样功能的,当判断到有发送人窗体时,就active,否则,则创建一个新的窗体。针对不同的发送人,创建多个窗体。(不是MDI)谢谢。

[解决办法]
一般来说实现楼主的要求会采用以下2个方法:
1、不对新窗口进行控制
New 一个窗口后,其他窗口或进程不会访问该窗口中的内容,可以采用这个方法
直接用零时变量New完后显示窗口,所有相关操作(例如保持、打开,关闭自己的事件等)都在窗口类中实现
2、其他窗口需要访问新窗口
这种不能New完拉倒,要用变量(或数组,集合等)保存起来,将来查找时,你可以直接对变量进行查找
[解决办法]
你把下面这段代码拷进你的项目里去:
VB.NET code
#Region "FormCollection"Public Class FormsCollection : Implements IEnumerable   Private c As New Collection()   Public Sub Add(ByVal f As Form)      c.Add(f)   End Sub   Public Sub Remove(ByVal f As Form)      Dim itemCount As Integer      For itemCount = 1 To c.Count         If f Is c.Item(itemCount) Then            c.Remove(itemCount)            Exit For         End If      Next   End Sub   Public ReadOnly Property Item(ByVal index As Integer) As Form      Get         Return CType(c.Item(index), Form)      End Get   End Property   Public ReadOnly Property Count() As Integer   Get      Return c.Count   End Get   End Property   Overridable Function GetEnumerator() As _   IEnumerator Implements IEnumerable.GetEnumerator      Return c.GetEnumerator   End FunctionEnd Class#End Region 

读书人网 >VB Dotnet

热点推荐