I am working with tabs in a application but I am having problem with the tabs. I want to allow the user to add or delete a tab.
Can any one help
Thanks in advance
I am working with tabs in a application but I am having problem with the tabs. I want to allow the user to add or delete a tab.
Can any one help
Thanks in advance
Welcome Fahim.
Try this code:
Drop a TabControl and two buttons namely Button1 and Button2.
'To add a new tab
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim p As New TabPage
p.Text = "New"
TabControl1.TabPages.Add(p)
End Sub
' To delete a selected tab
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
TabControl1.TabPages.RemoveAt(TabControl1.SelectedIndex)
End Sub
I was just going to show the same example :)
Anyway. Here's a small fix for removing tab page
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
If TabControl1.SelectedIndex >= 0 Then
TabControl1.TabPages.RemoveAt(TabControl1.SelectedIndex)
End If
End Sub
You should always check the value of <control>.SelectedIndex before using it. If the user hasn't selected anything, it will have a negative value (-1 usually) and your code will crash. This applies to list view control, tab control etc.
Thank. I missed that one.
Thanks for the code, I also want to allow the user to change the name of the tabs and if you don't mind can you help me.
Thanks
Welcome Fahim.
Try this code:
Drop a TabControl and two buttons namely Button1 and Button2.'To add a new tab Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim p As New TabPage p.Text = "New" TabControl1.TabPages.Add(p) End Sub ' To delete a selected tab Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click TabControl1.TabPages.RemoveAt(TabControl1.SelectedIndex) End Sub
AFAIK you can't use "in-place" renaming like you can do with, for example, tree view control. I used tab control's KeyDown event
Private Sub TabControl1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TabControl1.KeyDown
' Rename the current tab page
Dim NewName As String
' Check for F2
If e.KeyCode = Keys.F2 Then
' Is a tab page selected
If TabControl1.SelectedIndex >= 0 Then
' Prompt for the tab page name
NewName = InputBox("Enter tab page's name", "Rename", "")
' If user enters an empty string, no renaming
If Not String.IsNullOrEmpty(NewName) Then
' Get selected page for renaming
TabControl1.TabPages.Item(TabControl1.SelectedIndex).Text = NewName
End If
End If
End If
End Sub
The code uses InputBox for user input which is not an elegant solution, and you may want to use some other method for user input. But this solution works :)
I am using a text box for input. Is the good or not
AFAIK you can't use "in-place" renaming like you can do with, for example, tree view control. I used tab control's KeyDown event
Private Sub TabControl1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TabControl1.KeyDown ' Rename the current tab page Dim NewName As String ' Check for F2 If e.KeyCode = Keys.F2 Then ' Is a tab page selected If TabControl1.SelectedIndex >= 0 Then ' Prompt for the tab page name NewName = InputBox("Enter tab page's name", "Rename", "") ' If user enters an empty string, no renaming If Not String.IsNullOrEmpty(NewName) Then ' Get selected page for renaming TabControl1.TabPages.Item(TabControl1.SelectedIndex).Text = NewName End If End If End If End Sub
The code uses InputBox for user input which is not an elegant solution, and you may want to use some other method for user input. But this solution works :)
Yes you can. If you solved your problem then mark this thread as "Solved".
Thanks
You can use text box (or whatever) like adatapost already said. Since tab page control doesn't have "in-place" renaming, the solution will be IMHO more or less clumsy ;) anyway. And please mark this thread as solved, thanks.
We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.