首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > VB Dotnet >

在模块中调用主窗口上的控件有关问题

2012-05-12 
在模块中调用主窗口上的控件问题现有一个服务器程序,处理任务的代码放在一个模块中程序只有一个主窗口和一

在模块中调用主窗口上的控件问题
现有一个服务器程序,处理任务的代码放在一个模块中
程序只有一个主窗口和一个模块,程序启动后循环接收连接请求,有客户端连接的时候启动一个线程处理,线程里面判断客户端请求类型后调用模块中的function来处理请求.
这时问题就来了,在模块中的function执行期间需要向主界面上的一个textbox写记录,我试过直接用sv1.textbox.appendtext不行
在主程序里写了个public委托也不行 textbox的modifiers设置也public也不行 都没反应
后来发现直接byref过去就可以用 而且不用委托 很是郁闷 里面几百个function 没办法一个个传过去啊 
我是个不算太新的新手..遇到这种问题基本就是死了~~各种跪求高手...实在没办法了
模块中的代码大概就是这样的

VB.NET code
Namespace CSrv.Proc    Public Class Tproc#Region "动作一"        Public Function act1(ByRef tconn As SqlConnection, ByRef lister As Socket, ByVal tbstring As String, ByVal cip As String) As Boolean          '处理过程太长就不帖了          '这里也包括了往主窗口的文本框中写记录        End Function#End Region    End ClassEnd Namespace


然后主程序调用时是这样写的
VB.NET code
Dim PControl As New CSrv.Proc.TprocPControl.act1(tconn,lister,tbstring,cip)


[解决办法]
VB.NET code
    Public Sub TryAppendText(ctr As TextBox, text As String)        If Not ctr.IsHandleCreated Then Return        If ctr.InvokeRequired Then            ctr.Invoke(Sub() ctr.AppendText(text))        Else            ctr.AppendText(text)        End If    End Sub 

热点排行