.net - 无法从带有事件的用户控件中添加标签页

标签 .net vb.net multithreading events tabcontrol

好的,我有2个类(class)可以将标签页添加到tabcontrol

  • 通讯:类,使用事件
  • GeneralChat:UserControl,双击列表框中的名称

  • 我这样做的方式是这样的

    以下函数来自GeneralChat
    双击创建新标签页时处理
    Private Sub ListConnecte_MouseDoubleClick(sender As Object, e As MouseEventArgs) Handles ListConnecte.MouseDoubleClick
        addTab(ListConnecte.SelectedItems(0)) 'I've simplified the function, but it's not passing an empty value
    End Sub
    

    创建TabPAge
    Private Sub addTab(sUser As String)
        Dim tp As New TabPage(sUser)
        Dim pc As New PrivateChat(Me, weComs, sUser)
    
        pc.Dock = DockStyle.Fill
        tp.Controls.Add(pc)
    
        If (Me.InvokeRequired) Then
            Me.Invoke(New AddTabDelegate(AddressOf MainForm.addTab), tp)
        Else
            MainForm.addTab(tp)
        End If
    
        listChat.Add(sUser, tp)
    End Sub
    

    然后将其转到已创建变量TabControlChat的主窗体中,并将​​其添加到TabControlChat.TabPages

    所以我的问题是,当我双击时,一切正常,但是当我这样称呼它时
    Private Sub ReceivedString_weComs(Sender As Object, e As WithParamReceivedString) Handles weComs.ReceivedString
        Select Case e.Identifier
            Case Communication.enumTags.PrivateChat
                Dim sNom() As String = e.ReceivedString.Split(New String() {"#*#"}, StringSplitOptions.RemoveEmptyEntries)
    
                If (Not listChat.ContainsKey(sNom(0))) Then
                    addTab(sNom(0))
                Else
                    RaiseEvent PrivateChatString(Me, New ReceivedStringEventArgs(e.ReceivedString))
                End If
        End Select
    End Sub
    

    因此,此函数使用与先前调用相同的路径,但是添加了tabcontrol,而从Communication类添加了它

    我真的尝试了很多,如果还不够清楚,请问我更多关于调试的问题,希望您能帮到您:S

    最佳答案

    在第二段代码中,您实际上是在指MainForm的对象(实际上是不可见的,直到调用.show方法为止)。您必须使用用户已经可见的原始MainForm。

    关于.net - 无法从带有事件的用户控件中添加标签页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20448768/

    相关文章:

    c# - 如何查看由sql server中的代码创建的临时表?

    c# - Operator = 没有为类型 UIElement 和 UIElement 定义..?

    ASP.NET 数据绑定(bind)下拉列表还允许手动输入吗?

    java - Singleton/Static 会影响多线程 Java 应用程序的性能吗?

    c# - RabbitMQ 未定义 : There is no template at js/tmpl/login. ejs

    c# - C# 游戏中 NPC 的异步行为

    c# - 如何使用 Json.Net 序列化/反序列化带有自定义键的字典?

    vb.net - 邮箱和 Active Directory 帐户创建自动化

    java - Java未在异步线程上显示运行时错误/异常

    iphone - 为什么当另一个线程正在运行时 NSTimer 会被阻塞?