好的,我有2个类(class)可以将标签页添加到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
的主窗体中,并将其添加到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/