我想从树视图节点打开带有WebBrowser控件的表单。每个节点应打开相同的表单,但WebBrowser控件的URL路径不同。这是我尝试过的:
Private Sub TreeView1_AfterSelect(sender As Object, e As TreeViewEventArgs) Handles TreeView1.AfterSelect
'Define new page in Tab control and Webrowser form, which opens in It
Dim New_Page As New TabPage()
Dim WB As New Web_Form
WB.TopLevel = False
WB.Dock = DockStyle.Fill
WB.FormBorderStyle = FormBorderStyle.None
'Select case for treenode clicks
Select Case TreeView1.SelectedNode.Name
Case Is = "Node1"
'If Web_Form is opened, don't open new one, just focus to It instead
If Application.OpenForms().OfType(Of Web_Form).Any Then
For Each page As TabPage In TabControl1.TabPages
If page.Text = "Pictures" Then
TabControl1.SelectedTab = page
End If
Next page
'And If It's not opened, then open It in Tab control with setting focus on It
Else
New_Page.Controls.Add(WB)
New_Page.Text = "Pictures"
TabControl1.TabPages.Add(New_Page)
WB.Show()
WB.WebBrowser1.Navigate("C:\Pictures")
TabControl1.SelectedTab = New_Page
End If
Case Is = "Node2"
If Application.OpenForms().OfType(Of Web_Form).Any Then
For Each page As TabPage In TabControl1.TabPages
If page.Text = "Pictures" Then
TabControl1.SelectedTab = page
End If
Next page
Else
New_Page.Controls.Add(WB)
New_Page.Text = "Documents"
TabControl1.Visible = True
TabControl1.TabPages.Add(New_Page)
WB.Show()
WB.WebBrowser1.Navigate("C:\Documents")
TabControl1.SelectedTab = New_Page
End If
End Select
End Sub目前,我的代码只打开表单一次,无论我点击什么节点,Webrowser的URL都是正确的。但它不想再开另一家了。有什么建议吗?提前感谢!
发布于 2016-09-20 15:30:28
解决了。如果任何人需要此代码,则可以通过单击Treeview节点来填充具有相同表单的Tabcontrol页面。对于两个节点来说有点长,但根据您的需要可以缩短。如果有任何更好的建议,请随时提出:
Private Sub TreeView1_NodeMouseClick(sender As Object, e As TreeNodeMouseClickEventArgs) Handles TreeView1.NodeMouseClick
'Define new page in Tab control and Webrowser form, which opens in It
Dim New_Page As New TabPage()
Dim WB As New Web_Form
WB.TopLevel = False
WB.Dock = DockStyle.Fill
WB.FormBorderStyle = FormBorderStyle.None
'If user clicks node
If e.Node.Name Is "Node1" Then
Dim counter As Integer = 0
'If Web_Form is opened, don't open new one, just focus to It instead
If Application.OpenForms().OfType(Of Web_Form).Any Then
For Each page As TabPage In TabControl1.TabPages
If page.Text = "Pictures" Then
TabControl1.SelectedTab = page
counter=1
End If
Next page
Select Case counter
Case 1
'Do nothing
Exit Sub
Case Else
'Create new Tabpage
New_Page.Controls.Add(WB)
New_Page.Text = "Pictures"
TabControl1.Visible = True
TabControl1.TabPages.Add(New_Page)
WB.Show()
WB.WebBrowser1.Navigate("C:\Pictures")
TabControl1.SelectedTab = New_Page
End Select
'And If It's not opened, then open It in Tab control with setting focus on It
Else
New_Page.Controls.Add(WB)
New_Page.Text = "Pictures"
TabControl1.TabPages.Add(New_Page)
WB.Show()
WB.WebBrowser1.Navigate("C:\Pictures")
TabControl1.SelectedTab = New_Page
End If
End if
If e.Node.Name Is "Node2" Then
Dim counter As Integer = 0
If Application.OpenForms().OfType(Of Web_Form).Any Then
For Each page As TabPage In TabControl1.TabPages
If page.Text = "Pictures" Then
TabControl1.SelectedTab = page
counter=1
End If
Next page
Select Case counter
Case 1
'Do nothing
Exit Sub
Case Else
'Create new Tabpage
New_Page.Controls.Add(WB)
New_Page.Text = "Documents"
TabControl1.Visible = True
TabControl1.TabPages.Add(New_Page)
WB.Show()
WB.WebBrowser1.Navigate("C:\Documents")
TabControl1.SelectedTab = New_Page
End Select
Else
New_Page.Controls.Add(WB)
New_Page.Text = "Documents"
TabControl1.Visible = True
TabControl1.TabPages.Add(New_Page)
WB.Show()
WB.WebBrowser1.Navigate("C:\Documents")
TabControl1.SelectedTab = New_Page
End If
End if
End Subhttps://stackoverflow.com/questions/39573586
复制相似问题