| |
VB.NET - FortgeschritteneUserControl 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 | |
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.) | |
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 | |
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 | |
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. | |
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 | |
| 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 |
|
|
sevWizard für VB5/6
Professionelle Assistenten im Handumdrehen
Erstellen Sie eigene Assistenten (Wizards) im Look & Feel von Windows 2000/XP - mit allem Komfort und zwar in Windeseile :-) Weitere InfosTipp des Monats Access-Tools Vol.1
Über 400 MByte Inhalt
Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB
Nur 24,95 EURWeitere Infos
|
|
|
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
|
|