ROSTAM2
شنبه 15 دی 1403, 11:25 صبح
سلام
این شیء سفارشی می تواند به تعداد دلخواه سربرگ داشته باشد و هر سربرگ که انتخاب شود متن مرتبط با آن در یک RichTextBox نمایش و مدیریت می شود....
156356
<ToolboxBitmap(GetType(TabControl))>
<Docking(DockingBehavior.Ask)>
Public Class TextContentTabControl
Private TabItemsValue As New TabItemCollection(Me.ToolStrip1)
Public ReadOnly Property TabItems() As TabItemCollection
Get
Return TabItemsValue
End Get
End Property
Private SelectedIndexValue As Integer = 0
Public Property SelectedIndex() As Integer
Get
With Me.ToolStrip1
For i = 0 To .Items.Count - 2
If DirectCast(.Items(i), TabItem).Checked = True Then
Return i
End If
Next
End With
Return SelectedIndexValue
End Get
Set(ByVal value As Integer)
SelectedIndexValue = value
With Me.ToolStrip1
If value >= .Items.Count - 1 Then
Exit Property
End If
DirectCast(.Items(value), TabItem).Checked = True
End With
End Set
End Property
Public ReadOnly Property SelectedLabel() As String
Get
Return Me.TabItems(Me.SelectedIndex).Button.Text
End Get
End Property
Public ReadOnly Property SelectedContent() As String
Get
Return Me.TabItems(Me.SelectedIndex).Content
End Get
End Property
Private Sub ToolStripButton1_Click_1(sender As Object, e As System.EventArgs) Handles ToolStripButton1.Click
Dim DefaultName As String = "Language#"
With Me.ToolStrip1
Dim x As Integer = 1
For Each Item As ToolStripItem In .Items
If TypeOf (Item) Is TabItem Then
With DirectCast(Item, TabItem)
Do While (.Button.Text.EndsWith("#" + x.ToString))
x += 1
Loop
End With
End If
Next [Item]
DefaultName = DefaultName + x.ToString
Dim Item_ As New TabItem()
With TabItems.Add(Item_)
.Button.Text = DefaultName
.TabItemButton.EditMode = True
AddHandler .ButtonClciked, AddressOf TabItem_ButtonClciked
AddHandler .DeleteButtonClicked, AddressOf SelectedTabItem_DeleteButtonClicked
.Checked = True
End With
Me.SelectedTabItem = Item_
If Me.TabItems.Count = 1 Then
Me.RichTextBox1.Enabled = True
End If
Me.RichTextBox1.Text = Item_.Content
End With
End Sub
Public ReadOnly Property ContentBox() As RichTextBox
Get
Return Me.RichTextBox1
End Get
End Property
Protected Friend WithEvents SelectedTabItem As TabItem
Private Sub TabItem_ButtonClciked(sender As TabItem, Label As ToolStripLabel)
Me.SelectedTabItem = sender
Me.RichTextBox1.Text = sender.Content
End Sub
Private Sub RichTextBox1_TextChanged(sender As Object, e As EventArgs) Handles RichTextBox1.TextChanged
If Me.SelectedTabItem Is Nothing Then Exit Sub
Me.SelectedTabItem.Content = Me.RichTextBox1.Text
End Sub
Private Sub SelectedTabItem_DeleteButtonClicked(Sender As TabItem)
Dim Msg As MsgBoxResult =
MsgBox("Do you want to delete '" + Sender.Button.Text + "' Tab?",
MsgBoxStyle.Question Or MsgBoxStyle.YesNo)
If Msg = MsgBoxResult.No Then Exit Sub
Me.TabItems.Remove(Sender)
Me.RichTextBox1.Enabled = (Me.TabItems.Count > 0)
End Sub
Private Sub TextContentTabControl_Load(sender As Object, e As EventArgs) Handles Me.Load
TabItemsValue = New TabItemCollection(Me.ToolStrip1)
End Sub
End Class
دانلود سورس پروژه https://eitaa.com/vbprogramming/628 (https://eitaa.com/vbprogramming/628)
این شیء سفارشی می تواند به تعداد دلخواه سربرگ داشته باشد و هر سربرگ که انتخاب شود متن مرتبط با آن در یک RichTextBox نمایش و مدیریت می شود....
156356
<ToolboxBitmap(GetType(TabControl))>
<Docking(DockingBehavior.Ask)>
Public Class TextContentTabControl
Private TabItemsValue As New TabItemCollection(Me.ToolStrip1)
Public ReadOnly Property TabItems() As TabItemCollection
Get
Return TabItemsValue
End Get
End Property
Private SelectedIndexValue As Integer = 0
Public Property SelectedIndex() As Integer
Get
With Me.ToolStrip1
For i = 0 To .Items.Count - 2
If DirectCast(.Items(i), TabItem).Checked = True Then
Return i
End If
Next
End With
Return SelectedIndexValue
End Get
Set(ByVal value As Integer)
SelectedIndexValue = value
With Me.ToolStrip1
If value >= .Items.Count - 1 Then
Exit Property
End If
DirectCast(.Items(value), TabItem).Checked = True
End With
End Set
End Property
Public ReadOnly Property SelectedLabel() As String
Get
Return Me.TabItems(Me.SelectedIndex).Button.Text
End Get
End Property
Public ReadOnly Property SelectedContent() As String
Get
Return Me.TabItems(Me.SelectedIndex).Content
End Get
End Property
Private Sub ToolStripButton1_Click_1(sender As Object, e As System.EventArgs) Handles ToolStripButton1.Click
Dim DefaultName As String = "Language#"
With Me.ToolStrip1
Dim x As Integer = 1
For Each Item As ToolStripItem In .Items
If TypeOf (Item) Is TabItem Then
With DirectCast(Item, TabItem)
Do While (.Button.Text.EndsWith("#" + x.ToString))
x += 1
Loop
End With
End If
Next [Item]
DefaultName = DefaultName + x.ToString
Dim Item_ As New TabItem()
With TabItems.Add(Item_)
.Button.Text = DefaultName
.TabItemButton.EditMode = True
AddHandler .ButtonClciked, AddressOf TabItem_ButtonClciked
AddHandler .DeleteButtonClicked, AddressOf SelectedTabItem_DeleteButtonClicked
.Checked = True
End With
Me.SelectedTabItem = Item_
If Me.TabItems.Count = 1 Then
Me.RichTextBox1.Enabled = True
End If
Me.RichTextBox1.Text = Item_.Content
End With
End Sub
Public ReadOnly Property ContentBox() As RichTextBox
Get
Return Me.RichTextBox1
End Get
End Property
Protected Friend WithEvents SelectedTabItem As TabItem
Private Sub TabItem_ButtonClciked(sender As TabItem, Label As ToolStripLabel)
Me.SelectedTabItem = sender
Me.RichTextBox1.Text = sender.Content
End Sub
Private Sub RichTextBox1_TextChanged(sender As Object, e As EventArgs) Handles RichTextBox1.TextChanged
If Me.SelectedTabItem Is Nothing Then Exit Sub
Me.SelectedTabItem.Content = Me.RichTextBox1.Text
End Sub
Private Sub SelectedTabItem_DeleteButtonClicked(Sender As TabItem)
Dim Msg As MsgBoxResult =
MsgBox("Do you want to delete '" + Sender.Button.Text + "' Tab?",
MsgBoxStyle.Question Or MsgBoxStyle.YesNo)
If Msg = MsgBoxResult.No Then Exit Sub
Me.TabItems.Remove(Sender)
Me.RichTextBox1.Enabled = (Me.TabItems.Count > 0)
End Sub
Private Sub TextContentTabControl_Load(sender As Object, e As EventArgs) Handles Me.Load
TabItemsValue = New TabItemCollection(Me.ToolStrip1)
End Sub
End Class
دانلود سورس پروژه https://eitaa.com/vbprogramming/628 (https://eitaa.com/vbprogramming/628)