好的,我有2个人可以在tabcontrol中添加标签页
我这样做的方式就像这样
以下功能来自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
的mainform并将其添加到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
答案 0 :(得分:0)
在第二段代码中,您实际上是在引用MainForm的一个对象(实际上它是不可见的,直到您调用.show方法)。您必须使用已经对用户可见的原始MainForm。