Die Community zu .NET und Classic VB.
Menü

VB.NET-Tipp 0035: ListBox um eine Locked-Eigenschaft erweitern

 von 

Beschreibung

Dieses Beispiel zeigt, wie man die Standard-ListBox um eine Locked-Eigenschaft erweitert, die eine Änderung der Auswahl unterbindet.

Schwierigkeitsgrad:

Schwierigkeitsgrad 2

Framework-Version(en):

.NET Framework 1.0, .NET Framework 1.1, .NET Framework 2.0, .NET Framework 3.0, .NET Framework 3.5

.NET-Version(en):

Visual Basic 2002, Visual Basic 2003, Visual Basic 2005, Visual Basic 2008

Download:

Download des Beispielprojektes [4,37 KB]

' Dieser Quellcode stammt von http://www.activevb.de
' und kann frei verwendet werden. Für eventuelle Schäden
' wird nicht gehaftet.

' Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum.
' Ansonsten viel Spaß und Erfolg mit diesem Source!

' Projektversion:   Visual Studio 2002/2003
' Option Strict:    An
' Option Explicit:  An
'
' Referenzen: 
'  - System
'  - System.Drawing
'  - System.Windows.Forms
'

' ##############################################################################
' ############################ ExtendedListBox.vb ##############################
' ##############################################################################
Option Explicit On 
Option Strict On
Option Compare Binary

Imports System
Imports System.Windows.Forms

' <remarks>
'   Erweitert das Standard-ListBox-Steuerelement 
'   um die Möglichkeit, diese zu sperren, sodass der
'   Benutzer die Auswahl und den Inhalt nicht manipulieren kann.
' </remarks>
Public Class ExtendedListBox
    Inherits ListBox

    Private Const WM_KEYDOWN As Int32 = &H100
    Private Const WM_LBUTTONDOWN As Int32 = &H201
    Private Const WM_SETFOCUS As Int32 = &H7

    Private m_blnLocked As Boolean

    ' <summary>
    '   Erstellt eine neue Instanz der Klasse.
    ' </summary>
    Public Sub New()
        MyBase.New()
    End Sub

    Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
        MyBase.Dispose(disposing)
    End Sub

    Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
        If m_blnLocked Then
            If m.Msg = WM_KEYDOWN Or m.Msg = WM_LBUTTONDOWN Or _
                m.Msg = WM_SETFOCUS Then

                Return
            End If
        End If
        MyBase.WndProc(m)
    End Sub

    ''' <summary>
    '''   Gibt an oder zurück, ob der Inhalt und die Auwahl gesperrt sein soll.
    ''' <summary>
    ''' <value>Wert, der angibt, ob die Auswahl geändert werden kann.</value>
    Public Property Locked() As Boolean
        Get
            Return m_blnLocked
        End Get
        Set(ByVal Value As Boolean)
            m_blnLocked = Value
        End Set
    End Property
End Class
' ##############################################################################
' ################################ MainForm.vb #################################
' ##############################################################################
Option Explicit On 
Option Strict On
Option Compare Binary

Imports System
Imports System.Windows.Forms

' <remarks>
'   Hauptformular der Anwendung.
' </remarks>
Public Class MainForm
    Inherits System.Windows.Forms.Form


    Private Sub chkLocked_CheckedChanged(ByVal sender As System.Object, _
        ByVal e As System.EventArgs) Handles chkLocked.CheckedChanged

        Me.lstSample.Locked = Me.chkLocked.Checked
    End Sub

    Private Sub cboSelectionModes_SelectedIndexChanged( _
        ByVal sender As System.Object, _
        ByVal e As System.EventArgs) _
        Handles cboSelectionModes.SelectedIndexChanged

        Me.lstSample.SelectionMode = CType( _
            ([Enum].GetValues(GetType(SelectionMode))),  _
            SelectionMode())(Me.cboSelectionModes.SelectedIndex)
    End Sub
End Class

Ihre Meinung  

Falls Sie Fragen zu diesem Artikel haben oder Ihre Erfahrung mit anderen Nutzern austauschen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.