ist es möglich das TabControl so anzuordnen wie im Internet Explorer 10 und darunter auslagern/anzeigen zu lassen,wenn ja wie und gibt es vielleicht dazu eine Eigenschaft ? Unten dazu ein Bild.
Gruß iEi
Nein, das TabControl kann sowas nicht. Du wirst dir etwas eigenes dafür erstellen müssen.
Mit GDI+ oder komplett selber ?
GDI+ ist komplett selber.
Du musst dir halt ein Benutzersteuerelement anlegen.
Hmm es muss aber dann die gleichen Funktionen wie das normale TabControl haben.
Ist deine Entscheidung, ob du von "TabControl" erbst oder von "UserControl". Ich rate "UserControl". Musste halt dann alle Properties etc selber implementieren, aber du kannst dafür die Effekte besser steuern.
#definefor for(int z=0;z<2;++z)for // Have fun!
Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose!
Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da
Ich hab da letztens mal was gebastelt.
Das geht bestimmt auch schöner aber es kann dir ja als Grundgerüst dienen.
Das TBC kann Drag & Drop und hat einen "Schließen" Button
#Region "Überlagerung der Standart Events des TabControls"
ProtectedOverridesSub OnMouseDown(ByVal e As MouseEventArgs)
'Es werden 2 Unterschiedliche Events ausgelöst.
'1. Entfernung der gewählten TabPage wenn der "Close"-Button gewählt wurde
'2. Begin des Verschiebevorganges
'Entfernt die ausgewählte Tabpage
If rec_SchliessenSchaltfläche.Contains(e.Location) Then
IfNotMe.SelectedTab.Text.Contains("Aktuell - ") Then
Me.TabPages.RemoveAt(Me.SelectedIndex)
int_ChildFormNumber -=1
ExitSub'wenn die TabPage geschlossenwurde darf ein Verschieben nicht mehr ausgelöst werden
EndIf
EndIf
'Startet das Verschieben der TabPage
If (e.Button = Windows.Forms.MouseButtons.Left) AndAlso (MyBase.SelectedTab IsNotNothing) AndAlso (NotMyBase.GetTabRect(MyBase.SelectedIndex).IsEmpty) Then
Me.tbp_Ausgewählt =MyBase.SelectedTab
EndIf
MyBase.OnMouseDown(e)
EndSub
ProtectedOverridesSub OnMouseMove(ByVal e As MouseEventArgs)
WithMyBase.TabPages
If (e.Button = Windows.Forms.MouseButtons.Left) AndAlso (Me.tbp_Ausgewählt IsNotNothing) Then
tbp_Ziel = TabErmitteln(e.X, e.Y)
If (tbp_Ziel IsNotNothing) Then
Dim currRect As Drawing.Rectangle =MyBase.GetTabRect(.IndexOf(tbp_Ziel))
'Die TabPage wird immer auf den Index des PabPages geschrieben über dem sich die Maus befindet.
'Hier wird geprüft wo sich der MouseCursor im verhältniss zum zuverschiebenden TabPage befindent.
'Entsprechend seiner Position wird dann ein Pfeil nach Links oder Rechts angezeit.
If (.IndexOf(tbp_Ziel) < .IndexOf(Me.tbp_Ausgewählt)) Then
MyBase.Cursor = Cursors.PanWest
ElseIf (.IndexOf(tbp_Ziel) > .IndexOf(Me.tbp_Ausgewählt)) Then
MyBase.Cursor = Cursors.PanEast
Else'Die TabPage unterhalb des Cursors ist der Aktuelle (zu verschiebende) Tab -> Cursor wird Default
MyBase.Cursor = Cursors.Default
EndIf
Else'Es befindet sich keine TabPage unterhalb des Cursors -> Ein Verschieben ist hierher nicht möglich.
Me.Cursor = Cursors.No
EndIf
Else'Wenn keine TabPage ausgewählt wurde
Me.Cursor = Cursors.Default
EndIf
MyBase.OnMouseMove(e)
EndWith
EndSub
ProtectedOverridesSub OnMouseUp(ByVal e As MouseEventArgs)
WithMyBase.TabPages
If (e.Button = Windows.Forms.MouseButtons.Left) AndAlso (Me.tbp_Ausgewählt IsNotNothing) Then
tbp_Ziel = TabErmitteln(e.X, e.Y)
If (tbp_Ziel IsNotNothing) AndAlso (Not tbp_Ziel.Equals(Me.tbp_Ausgewählt)) Then
Dim currRect As Drawing.Rectangle =MyBase.GetTabRect(.IndexOf(tbp_Ziel))
If (.IndexOf(tbp_Ziel) < .IndexOf(Me.tbp_Ausgewählt)) Then
.Remove(Me.tbp_Ausgewählt)
.Insert(.IndexOf(tbp_Ziel), Me.tbp_Ausgewählt)
MyBase.SelectedTab =Me.tbp_Ausgewählt
ElseIf (.IndexOf(tbp_Ziel) > .IndexOf(Me.tbp_Ausgewählt)) Then
.Remove(Me.tbp_Ausgewählt)
.Insert(.IndexOf(tbp_Ziel) +1, Me.tbp_Ausgewählt)
MyBase.SelectedTab =Me.tbp_Ausgewählt
EndIf
EndIf
EndIf
Me.tbp_Ausgewählt =Nothing
MyBase.Cursor = Cursors.Default
MyBase.OnMouseUp(e)
EndWith
EndSub
PrivateFunction TabErmitteln(ByVal x AsInteger, ByVal y AsInteger) As TabPage
For i AsInteger=0ToMyBase.TabPages.Count -1
IfMyBase.GetTabRect(i).Contains(x, y) Then
ReturnMyBase.TabPages(i)
EndIf
Next
ReturnNothing
EndFunction
#End Region
EndClass
Ich würde mich freuen wenn du mir deine überarbeitete Version zeigen würdest.
Ich bin noch am üben mit den UserControls. Hoffe davon dann auch lernen zu können.
There is no CLOUD - just other people's computers
Q: Why do JAVA developers wear glasses? A: Because they can't C#
Daily prayer: "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."
Thx Schamash !!
@iEi
konntest du mein Control verbessern?
Wenn ja würde ich das gerne sehen damit ich daraus was lernen kann. Danke!
There is no CLOUD - just other people's computers
Q: Why do JAVA developers wear glasses? A: Because they can't C#
Daily prayer: "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."