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-2025
 
zurück

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

VB.NET - Ein- und Umsteiger
Re: BackColorChanged-Ereignis im NumericUpDown-Control 
Autor: Rainer
Datum: 16.11.11 14:29

Hallo Manfred,
es liegt jetzt die Antwort von Microsoft vor. Das Grundsätzliche zuerst: Das Fehlverhalten des NumericUpDown-Steuerelementes wurde als Bug anerkannt. Es wird aber kein Update für die vorhandenen Versionen von Windows-Forms geben. Eventuell kann es für die Nachfolgeversion 4.5 trotz eingestellter Entwicklungsarbeit eine Behebung des Fehlers in Windows-Forms geben.
Es gab insgesamt zwei Alternativen zur Umgehung des Fehlers:

Erster Vorschlag
----------------
Vom Support-Mitarbeiter wurde folgende Variante vorgeschlagen.

Public Class Form1

Private Sub NumericUpDown1_BackColorChanged(sender As System.Object, e As System.EventArgs) Handles NumericUpDown1.BackColorChanged
MsgBox(sender.ToString())
End Sub

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click

NumericUpDown1.BackColor = Color.Chocolate
NumericUpDown1_BackColorChanged(Button1, e)

End Sub
End Class

Diese Lösung ist einfach. Sie hat aber den Nachteil, dass ich an jeder Stelle im Programm, die eine Veränderung der Hintergrundfarbe veranlaßt, der Ereignis-Handler explizit aufrufen werden muss. Außerdem muss in jede betreffende Funktion oder Prozedur zusätzlich der Parameter "e As EventArgs" mitgeschleppt werden. Desweiteren ist jede Farbeinstellung, sofern man tatsächlich nur den vollzogenen Farbwechsel behandeln will, mit einer vorausgehenden Abfrage der aktuellen Farbeinstellung verbunden:

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click

If numericUpDown.Backcolor <> Color.Chocolate Then
NumericUpDown1.BackColor = Color.Chocolate
NumericUpDown1_BackColorChanged(Button1, e)
End If

End Sub

Zweiter Vorschlag
-----------------
Der zweiten Vorschlag ist vergleichbar mit Deinem Lösungsansatz: Es wird ein benutzerdefiniertes Ereignis mit einer Ereignisprozedur deklariert. Um die Aktivierung der Ereignisprozedur (RaiseEvent) nicht an jeder infrage kommenden Programmstelle vornehmen zu müssen, ist dieses Ereignis mit einer Property, die die Eigenschaft BackColor realisiert, verknüpft.

Public Class Form1

Public Event BColorChanged(c As Color)

Public Sub New()

' ' This call is required by the designer.
InitializeComponent()
' Add any initialization after the InitializeComponent() call.

AddHandler BColorChanged, AddressOf NewBackColorChanged


End Sub

Private Sub NewBackColorChanged(c As Color)
MsgBox(c.ToString())
End Sub

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
NumericUpDownBackColor(NumericUpDown1) = Color.Chocolate
End Sub

Private myBackColor As Color
Public Property NumericUpDownBackColor(ctl As Control) As Color
Get
Return myBackColor
End Get
Set(ByVal value As Color)
If ctl.BackColor <> value Then
myBackColor = value
ctl.BackColor = myBackColor
RaiseEvent BColorChanged(myBackColor)
End If
End Set
End Property
End Class

Für diese Variante habe ich mich entschieden. Dass Deine Lösung zuerst bei mir nicht lief, lag an einem Fehler bei der Instanziierung der Ereignisroutine. Der Vorteil dieser Lösung ist die Unabhängigkeit der BackColor-Eigenschaft vom aufrufenden Steuerelement und die damit verbundene zentrale Aktivierung des Ereignisses. Für die gleichartige Behandlung einer Gruppe von Zählfeldern, wie es mein Problem beinhaltet, ist diese Lösung die praktikabelste.
Also nochmals Dank und bis zum nächsten Mal.
MfG, Rainer.
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
BackColorChanged-Ereignis im NumericUpDown-Control1.043Rainer11.11.11 12:09
Re: BackColorChanged-Ereignis im NumericUpDown-Control828Manfred X11.11.11 17:28
Re: BackColorChanged-Ereignis im NumericUpDown-Control610Rainer14.11.11 15:13
Re: BackColorChanged-Ereignis im NumericUpDown-Control652Manfred X14.11.11 15:23
Re: BackColorChanged-Ereignis im NumericUpDown-Control690Rainer16.11.11 14:29

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-2025 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