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
UserControl Checkbox click event 
Autor: henrikl2000
Datum: 06.04.17 14:38

Hallo,

Ich habe ein Problem mit mein UserControl CheckBox.
Meine Checkbox besteht aus ein PictureBox, ein Label und der Form.
Der Click Event funktioniert nicht richtig.
Wenn ich den PictureBox oder Label Klicke reagiert der Click Event nicht, nur wenn ich der Form vom Control Klicke reagiert der Click Event.
Sehe bitte mein Code unten.
Ich hoffe jemand von euch kann mir helfen das im Griff zu bekommen.

Im Voraus vielen Dank,
Henrik
Imports System.ComponentModel
 
<DefaultEvent("CheckedChanged")> _
<ToolboxBitmap(GetType(PicCheckBox), "CheckedNormal16.bmp")> _
Public Class PicCheckBox
    Public Event CheckedChanged As EventHandler
 
    Private _Checked As Boolean = True
    Private _CheckedPicDefault As Image = My.Resources.CheckedNormal
    Private _UncheckedPicDefault As Image = My.Resources.UncheckedNormal
    Private _CheckedPic, _UnCheckedPic As Image
 
    Public Sub New()
        ' This call is required by the designer.
        InitializeComponent()
 
        ' Add any initialization after the InitializeComponent() call.
        picCheck.BackgroundImageLayout = ImageLayout.Zoom
        If _Checked Then
            If Not _CheckedPic Is Nothing Then
                picCheck.BackgroundImage = _CheckedPic
            Else
                picCheck.BackgroundImage = _CheckedPicDefault
            End If
        Else
            If Not _UnCheckedPic Is Nothing Then
                picCheck.BackgroundImage = _UnCheckedPic
            Else
                picCheck.BackgroundImage = _UncheckedPicDefault
            End If
        End If
 
        lblText.AutoSize = True
        Me.Height = picCheck.Height
    End Sub
 
    <EditorBrowsable(EditorBrowsableState.Always)> _
    <Browsable(True)> _
    <DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)> _
    <Bindable(True)> _
    Public Overrides Property Text As String
        Get
            Return lblText.Text
        End Get
        Set(value As String)
            lblText.Text = value
        End Set
    End Property
 
    Public Property CheckedPic As Image
        Get
            Return _CheckedPic
        End Get
 
        Set(value As Image)
            _CheckedPic = value
            SetPic()
        End Set
    End Property
 
    Public Property UnCheckedPic As Image
        Get
            Return _UnCheckedPic
        End Get
 
        Set(value As Image)
            _UnCheckedPic = value
            SetPic()
        End Set
    End Property
 
    Public Property Checked As Boolean
        Get
            Return _Checked
        End Get
        Set(ByVal value As Boolean)
            If _Checked = value Then Return
            _Checked = value
 
            RaiseEvent CheckedChanged(Me, EventArgs.Empty)
            SetPic()
        End Set
    End Property
 
    'Public Property ToolTip As ToolTip
    '    Get
    '        Return ToolTip1
    '    End Get
 
    '    Set(value As ToolTip)
    '        ToolTip1 = value
    '    End Set
    'End Property
 
 
    Private Sub SetPic()
        If _Checked Then
            If Not _CheckedPic Is Nothing Then
                picCheck.BackgroundImage = _CheckedPic
            Else
                picCheck.BackgroundImage = _CheckedPicDefault
            End If
        Else
            If Not _UnCheckedPic Is Nothing Then
                picCheck.BackgroundImage = _UnCheckedPic
            Else
                picCheck.BackgroundImage = _UncheckedPicDefault
            End If
        End If
 
    End Sub
 
    Private Sub picCheck_Click(sender As System.Object, e As System.EventArgs) _
      Handles picCheck.Click, lblText.Click, Me.Click
        Checked = Not Checked
    End Sub
End Class
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: UserControl Checkbox click event 
Autor: Manfred X
Datum: 06.04.17 19:04

Hallo!

Im Prinzip sollte der Click-Eventhandler reagieren.
Hast Du auch den Designer-generierten Code angeschaut?
(Bei mir funktioniert der Click in Deinem Code.)
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: UserControl Checkbox click event 
Autor: henrikl2000
Datum: 06.04.17 19:57

Hallo Manfred,

Danke für deine Antwort.
Wenn ich den PictureBox oder Label Klicke wechselt das Control zwischen checked und unchecked. I hoffe du verstehst was ich meine.
Wenn ich aber die Form des UserControls klicke erscheint die messagebox.


Private Sub PicCheckBox1_Click(sender As Object, e As EventArgs) Handles _
  PicCheckBox1.Click
    MsgBox("Click")
End Sub
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: UserControl Checkbox click event 
Autor: Manfred X
Datum: 06.04.17 20:21

Die Routine zum Wechsel des Checked-Wertes befindet sich im Usercontrol.
Sie wird wegen Me.Click auch ausgelöst, wenn Du auf das Usercontrol clickst.

Die Routine "PicCheckBox1_Click" befindet sich offensichtlich in einem Formular,
auf das das Usercontrol gezogen worden ist. Sie wird nur bei einem Click auf
die Fläche des Usercontrol ausgelöst.

Wenn Du im Formular alle Clicks auf das Usercontrol verarbeiten möchtest,
hast Du dafür das "CheckedChanged"-Ereignis vorgesehen:
 
Private Sub PicCheckBox1_CheckedCanged(sender As Object, e As EventArgs) _
     Handles PicCheckbox1.CheckedChanged
        MsgBox("Click")
End Sub
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: UserControl Checkbox click event 
Autor: henrikl2000
Datum: 07.04.17 08:53

Hallo,

Danke.

Der Grund weil ich das "Click"-Ereignis brauchte. Ist das ich möchte das meine 4 Checkboxen wie Radiobuttons fungieren. So das nur eine Checkbox check Wert erhalten kann.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: UserControl Checkbox click event 
Autor: Franki
Datum: 11.04.17 02:45

Hallo,

das ist aber eigentlich nicht der richtige Weg, Checkboxen zu missbrauchen, dass sie wie Radiobuttons funktionieren. Was spricht denn gegen die Verwendung von Radiobuttons?

Der User kennt den Unterschied seit Jahrzehnten und könnte durch den Missbruach durchaus verwirrt sein wenn er deine Anwendung noch nichht kennt.

Ich sag mal so: Wenn man keinen Schraubendreher hat wird jede Schraube zum Nagel weil man nur eine Hammer hat. Das kann unter gewissen Umständen zwar funktionieren ist aber weder im Handwerk noch in der Programmierung der richtige Weg.

So etwas sollte man einfach meiner Meinung nach nicht machen. Grade wenn es an Themen wie z.B. Barrierefreiheit geht, dann könnte das ein KO Kriterium sein.

Gruß
Frank
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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