vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Mails senden, abrufen und decodieren - ganz easy ;-)  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Fortgeschrittene
Re: Tabpages enabled 
Autor: WaldiMaywood
Datum: 11.06.04 11:38

Falls du Probleme mit Klasse hast, hier der funktionierende Code (war ein kleiner Fehler enthalten):
Public Class TabControlEx
    Inherits System.Windows.Forms.TabControl
    Private Const WM_LBUTTONDOWN As Integer = &H201
    Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
        If m.Msg = WM_LBUTTONDOWN Then
            Dim pt As New Point(m.LParam.ToInt32)
            Dim index As Integer
            For index = 0 To Me.TabPages.Count - 1
                If GetTabRect(index).Contains(pt) Then
                    If TabPages(index).Enabled Then
                        MyBase.WndProc(m)
                    End If
                    Exit Sub
                End If
            Next
        End If
        MyBase.WndProc(m)
    End Sub
    Protected Overrides Sub OnKeyDown(ByVal ke As _
      System.Windows.Forms.KeyEventArgs)
        Dim currentIndex As Integer = Me.SelectedIndex
        Dim index As Integer
        If ke.KeyCode = Keys.Left AndAlso Not (ke.Alt AndAlso Not ke.Control) _
          Then
            For index = currentIndex - 1 To 0 Step -1
                If TabPages(index).Enabled Then
                    Me.SelectedIndex = index
                    Exit For
                End If
            Next
            ke.Handled = True
        ElseIf ke.KeyCode = Keys.Right AndAlso Not (ke.Alt AndAlso Not _
          ke.Control) Then
            For index = currentIndex + 1 To TabPages.Count - 1
                If TabPages(index).Enabled Then
                    Me.SelectedIndex = index
                    Exit For
                End If
            Next
            ke.Handled = True
        End If
        MyBase.OnKeyDown(ke)
    End Sub
    Public Sub DisablePage(ByRef pTabPage As TabPage)
        With pTabPage
            .Enabled = False
        End With
        Me.Refresh()
    End Sub
    Private Sub TabControlEx_DrawItem(ByVal sender As Object, ByVal e As _
      System.Windows.Forms.DrawItemEventArgs) Handles MyBase.DrawItem
        Dim intOffsetLeft As Int32
        Dim intOffsetTop As Int32
        Dim r As RectangleF = RectangleF.op_Implicit(e.Bounds)
        Dim r2 As RectangleF
        Dim ItemBrush As New SolidBrush(Me.BackColor)
        Dim b As Brush
        If Me.TabPages(e.Index).Enabled Then
            b = Brushes.Black
        Else
            b = Brushes.Gray
        End If
        Dim sf As New StringFormat
        sf.Alignment = StringAlignment.Center
        sf.LineAlignment = StringAlignment.Center
        Dim im As Bitmap
        If Me.TabPages(e.Index).ImageIndex <> -1 Then
            im = CType(Me.ImageList.Images(Me.TabPages(e.Index).ImageIndex), _
              Bitmap)
        End If
        If Me.TabPages(e.Index).ImageIndex <> -1 Then
            r2 = New RectangleF(r.X + (im.Width \ 2), r.Y, r.Width, r.Height)
        Else
            r2 = New RectangleF(r.X, r.Y, r.Width, r.Height)
        End If
        If CBool(e.State And DrawItemState.Selected) Then
            e.Graphics.FillRectangle(ItemBrush, e.Bounds)
            e.Graphics.DrawString(Me.TabPages(e.Index).Text, e.Font, b, r2, sf)
            intOffsetLeft = 5
            intOffsetTop = 5 '4
        Else
            e.Graphics.DrawString(Me.TabPages(e.Index).Text, e.Font, b, r2, sf)
            intOffsetLeft = 2
            intOffsetTop = 2 '4
        End If
        If Me.TabPages(e.Index).ImageIndex <> -1 Then
            Me.ImageList.Draw(e.Graphics, Convert.ToInt32(r.Left) + _
              intOffsetLeft, Convert.ToInt32(r.Top) + intOffsetTop, Me.TabPages( _
              e.Index).ImageIndex)
        End If
    End Sub
End Class
Übrigens, damit das Tab auch wie Enabled = False dargestellt wird, muss du die TabControl "DrawMode " Eigenschaft auf "OwnerDrawFixed" ändern.
TabPages "deaktivieren" kannst du dann mit der "DisablePage()" Methode.
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Tabpages enabled1.659PACoSys10.06.04 17:55
Re: Tabpages enabled1.178WaldiMaywood10.06.04 22:34
Re: Tabpages enabled2.302WaldiMaywood11.06.04 11:38
Re: Tabpages enabled1.125PACoSys16.06.04 08:55
Re: Tabpages enabled1.097WaldiMaywood16.06.04 09:21
Re: Tabpages enabled1.055PACoSys16.06.04 09:48
Re: Tabpages enabled1.035Toolmaster09.09.06 14:56
Re: Tabpages enabled1.035ModeratorFZelle11.09.06 08:53

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel