I m working on project in which i have to add tab & close tab as that of IE.
I m able to do dat,but its not very much clean.Check it out.Plz see if somebody can help me to do it more better.
Public Class Form5
Public lSelectedTabPageIndex As Integer
Public CurrentWEB As WebBrowser
Public Sub New()
MyBase.New()
InitializeComponent()
TabWebBrowsers.DrawMode = System.Windows.Forms.TabDrawMode.OwnerDrawFixed
End Sub
Private Sub mnuAddTab_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuAddTab.Click
Try
lSelectedTabPageIndex = lSelectedTabPageIndex + 1
Call AddNewTabInTabWebBrowsers(True, True)
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
Private Sub AddNewTabInTabWebBrowsers(ByVal bMakeTab As Boolean, ByVal bMakeWebBrowser As Boolean)
Static lTabPageCount As Integer = 1
If bMakeTab Then
Dim tab As TabPage = New TabPage("Connecting...")
tab.Name = "tab" & lTabPageCount
tab.Tag = "http://www.google.com"
tab.ImageIndex = 0
TabWebBrowsers.TabPages.Add(tab)
TabWebBrowsers.SelectedIndex = TabWebBrowsers.TabPages.Count - 1
lSelectedTabPageIndex = TabWebBrowsers.TabPages.Count - 1
lTabPageCount = lTabPageCount + 1
If TabWebBrowsers.TabPages.Count > 1 Then
ContextmnuCloseTab.Enabled = True
End If
End If
If bMakeWebBrowser Then Call AddWebBrowserATRUNTIME(bMakeTab)
End Sub
Private Sub AddWebBrowserATRUNTIME(ByVal bMakeTab As Boolean)
Try
Dim WEB As New WebBrowser
Static lWEBCount As Integer = 0
WEB.Name = "Wbr" & lWEBCount
WEB.Size = New Size(731, 354)
WEB.Location = New Point(3, 3)
If bMakeTab = False Then
WEB.Navigate("http://www.google.com")
Else
WEB.Navigate("about:blank")
End If
TabWebBrowsers.TabPages.Item(TabWebBrowsers.TabPages.Count - 1).Controls.Add(WEB)
lWEBCount = lWEBCount + 1
TabWebBrowsers.Refresh()
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
Private Sub TabWebBrowsers_DrawItem(ByVal sender As Object, ByVal e As System.Windows.Forms.DrawItemEventArgs) Handles TabWebBrowsers.DrawItem
Try
Dim _imageLocation As Point = New Point(15, 4)
Dim g As Graphics = e.Graphics
Dim tp As TabPage = TabWebBrowsers.TabPages(e.Index)
Dim br As Brush
Dim sf As New StringFormat
Dim rold As New RectangleF(e.Bounds.X, e.Bounds.Y + 2, e.Bounds.Width, e.Bounds.Height - 2)
sf.Alignment = StringAlignment.Center
Dim strTitle As String = tp.Text
br = New SolidBrush(Color.LightBlue) ' Change this to your preference
g.FillRectangle(br, e.Bounds)
br = New SolidBrush(Color.Black)
g.DrawString(strTitle, TabWebBrowsers.Font, br, rold, sf)
Dim img As Image = ImgCommon.Images(0) 'ImgIcons.Images(1) MONISH
Dim r1 As Rectangle = e.Bounds
r1 = Me.TabWebBrowsers.GetTabRect(e.Index)
r1.Offset(2, 2)
Dim TitleBrush As Brush = New SolidBrush(Color.Black)
Dim f As Font = Me.Font
Dim title As String = Me.TabWebBrowsers.TabPages(e.Index).Text
e.Graphics.DrawImage(img, New Point(r1.X + (Me.TabWebBrowsers.GetTabRect(e.Index).Width - _imageLocation.X) - 10, _imageLocation.Y + 2))
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
Private Sub Form5_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Try
Call AddNewTabInTabWebBrowsers(False, True)
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
Private Sub ContextmnuCloseTab_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ContextmnuCloseTab.Click
Try
If lSelectedTabPageIndex + 1 = TabWebBrowsers.TabPages.Count Then
lSelectedTabPageIndex = lSelectedTabPageIndex - 1
End If
With Me.TabWebBrowsers.TabPages
.Remove(.Item(lSelectedTabPageIndex))
End With
With Me.TabWebBrowsers
.SelectedIndex = lSelectedTabPageIndex
.Refresh()
End With
If TabWebBrowsers.TabPages.Count = 1 Then
ContextmnuCloseTab.Enabled = False
End If
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
Private Sub TabWebBrowsers_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles TabWebBrowsers.MouseUp
Try
Dim tabIndex As Integer
tabIndex = GetTabIndex(e.Location)
If tabIndex <> -1 Then
lSelectedTabPageIndex = CInt(tabIndex.ToString("F0"))
End If
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
Private Function GetTabIndex(ByVal p As Point) As Integer
Dim result As Integer = -1
Dim i1 As Integer
For i1 = 0 To TabWebBrowsers.TabPages.Count - 1
If TabWebBrowsers.GetTabRect(i1).Contains(p) Then
GetTabIndex = i1
End If
Next
End Function
End Class
In first tab i m opening google.On other tabs i m opening blank.
I m facing just simple probs in close tab,Suppose i click on first tab that is google,then right click on second tab(tab haeder) to close it...When tab is close,First just a min, google tab is shown then selected tab is shown....I dont want to show even a google tab for a min...
Is there any easy way to craete IE browser..is there any IE Browsr control in VB.Net?