Hi,
wie so oft, muss ich ein bissl ausholen, um mein Problem verständlich zu machen. Ich hoffe, ihr habt ein wenig Geduld mit mir.
Ich habe eine Form, mit der ich Kalender Einträge editiere. (s. Anhang)
Das Feld "Info" enthält freien Text, der auch Zeilenvorschübe enthalten kann. Die Zeilenvorschübe sollen wie gewohnt mit ENTER / RETURN einzugeben sein. Und deshalb wähle ich für die Controls "Cancel" und "Accept" keinen "Button", sondern ein "Label". Damit etwa die RETURN Taste nicht "falsch" interpretiert wird. Gleiches Gilt für das Help (?) Control ... da habe ich eine Picture Box gewählt. Meine Form enthält also keine Command Buttons ... und damit wird ENTER / RETURN immer als Zeilenvorschub in der Info Textbox interpretiert.
Dieses Verhalten der Info Textbox ist sehr angenehm für die Bedienung dieses Fensters.
Wenn das Label oder die Picture Box "geklickt" werden, führe ich die entsprechende Funktion aus (so als würde es sich um einen stinknormalen Button handeln).
Das funktioniert soweit alles ohne Probleme.
Jetzt würde ich aber gern noch den Background der Control etwa hellgrün einfärben, wenn sich der MouseZeiger in das Control bewegt ... und natürlich wird der Background wieder grau, wenn der Mauszeiger das Feld verlässt. Das macht die Bedienung ein bissl intuitiver.
In meinem angehängten Bildchen ist das Feld "Accept" hellgrün gefärbt (den Mauszeiger sieht man nicht, weil den meine Screenshot Routine verschluckt ... )
So habe ich das kodiert:
Die gute Nachricht: das funktioniert auch so.
Die schlechte Nachricht: ich habe ziemliche Zweifel, ob man das so im Sinne der reinen Lehre programmieren sollte !
Vor allem die Abfragen der Gestalt
nähren mein Misstrauen ...
Ich hab das Gefühl, dass ich hier ziemlich "hausbacken" vorgehe ...
Kann mir einer der Profis unter euch nachsichtig und geduldig sagen, wie man das "richtig" macht ?
LG
Peter
wie so oft, muss ich ein bissl ausholen, um mein Problem verständlich zu machen. Ich hoffe, ihr habt ein wenig Geduld mit mir.
Ich habe eine Form, mit der ich Kalender Einträge editiere. (s. Anhang)
Das Feld "Info" enthält freien Text, der auch Zeilenvorschübe enthalten kann. Die Zeilenvorschübe sollen wie gewohnt mit ENTER / RETURN einzugeben sein. Und deshalb wähle ich für die Controls "Cancel" und "Accept" keinen "Button", sondern ein "Label". Damit etwa die RETURN Taste nicht "falsch" interpretiert wird. Gleiches Gilt für das Help (?) Control ... da habe ich eine Picture Box gewählt. Meine Form enthält also keine Command Buttons ... und damit wird ENTER / RETURN immer als Zeilenvorschub in der Info Textbox interpretiert.
Dieses Verhalten der Info Textbox ist sehr angenehm für die Bedienung dieses Fensters.
Wenn das Label oder die Picture Box "geklickt" werden, führe ich die entsprechende Funktion aus (so als würde es sich um einen stinknormalen Button handeln).
Das funktioniert soweit alles ohne Probleme.
Jetzt würde ich aber gern noch den Background der Control etwa hellgrün einfärben, wenn sich der MouseZeiger in das Control bewegt ... und natürlich wird der Background wieder grau, wenn der Mauszeiger das Feld verlässt. Das macht die Bedienung ein bissl intuitiver.
In meinem angehängten Bildchen ist das Feld "Accept" hellgrün gefärbt (den Mauszeiger sieht man nicht, weil den meine Screenshot Routine verschluckt ... )
So habe ich das kodiert:
VB.NET-Quellcode
- Private Sub ctrlEnter_Click(sender As Object, e As EventArgs) Handles picHelp.MouseEnter,
- lblHelpClose.MouseEnter,
- lblCancel.MouseEnter,
- lblAccept.MouseEnter
- If sender.GetType.ToString = "System.Windows.Forms.PictureBox" Then
- Dim myPicturebox = DirectCast(sender, PictureBox)
- myPicturebox.BackColor = Color.LightGreen
- End If
- If sender.GetType.ToString = "System.Windows.Forms.Label" Then
- Dim myLabel = DirectCast(sender, Label)
- myLabel.BackColor = Color.LightGreen
- End If
- End Sub
- Private Sub ctrlLeave_Click(sender As Object, e As EventArgs) Handles picHelp.MouseLeave,
- lblHelpClose.MouseLeave,
- lblCancel.MouseLeave,
- lblAccept.MouseLeave
- If sender.GetType.ToString = "System.Windows.Forms.PictureBox" Then
- Dim myPicturebox = DirectCast(sender, PictureBox)
- myPicturebox.BackColor = SystemColors.Control
- End If
- If sender.GetType.ToString = "System.Windows.Forms.Label" Then
- Dim myLabel = DirectCast(sender, Label)
- myLabel.BackColor = SystemColors.Control
- End If
- End Sub
Die gute Nachricht: das funktioniert auch so.
Die schlechte Nachricht: ich habe ziemliche Zweifel, ob man das so im Sinne der reinen Lehre programmieren sollte !
Vor allem die Abfragen der Gestalt
nähren mein Misstrauen ...
Ich hab das Gefühl, dass ich hier ziemlich "hausbacken" vorgehe ...
Kann mir einer der Profis unter euch nachsichtig und geduldig sagen, wie man das "richtig" macht ?
LG
Peter