Textbox Enter Leave mit ActiveControl
Hallo,
kann man das auch kürzer machen...
Wenn ich ActiveControl.Backcolor mache bleiben in der Leave Methode also beim Verlassen des Steuerelementes, diese
Orange und werden nicht weiss
Grüße Florian
kann man das auch kürzer machen...
private void textBox1_Enter(object sender, EventArgs e)
{
textBox1.BackColor = Color.OrangeRed;
}
private void textBox1_Leave(object sender, EventArgs e)
{
textBox1.BackColor = Color.White;
}
private void textBox2_Enter(object sender, EventArgs e)
{
textBox2.BackColor = Color.OrangeRed;
}
private void textBox2_Leave(object sender, EventArgs e)
{
textBox2.BackColor = Color.White;
}
private void textBox3_Enter(object sender, EventArgs e)
{
textBox3.BackColor = Color.OrangeRed;
}
private void textBox3_Leave(object sender, EventArgs e)
{
textBox3.BackColor = Color.White;
}
Wenn ich ActiveControl.Backcolor mache bleiben in der Leave Methode also beim Verlassen des Steuerelementes, diese
Orange und werden nicht weiss
private void textBoxAll_Enter(object sender, EventArgs e)
{
ActiveControl.BackColor = Color.OrangeRed;
}
private void textBoxAll_Leave(object sender, EventArgs e)
{
ActiveControl.BackColor = Color.White;
}
Grüße Florian
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 665692
Url: https://administrator.de/contentid/665692
Ausgedruckt am: 19.11.2024 um 17:11 Uhr
5 Kommentare
Neuester Kommentar
kann man das auch kürzer machen...
Jepp.Du kannst dir bspw. eine abgeleitete Klasse für deine Textbox erstellen und dort überschreibst du die Event-Handler.
Die Textboxen erstellst du dann on the fly von der Klasse, diese erben dann die Eigenschaften und Eventhandler die du in der Custom Textbox Klasse definierst und schon haben diese Controls dein gewünschtes vordefinierte Verhalten .
Einfaches Beispiel
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication1 {
public partial class Form1 : Form {
public Form1() {
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e) {
MyCustomTextBox t1 = new MyCustomTextBox() { Location = new Point(10,10), Size = new Size(150,20)};
MyCustomTextBox t2 = new MyCustomTextBox() { Location = new Point(10,40), Size = new Size(150,20)};
Controls.AddRange(new MyCustomTextBox {t1,t2});
}
}
public class MyCustomTextBox : TextBox {
protected override void OnEnter(EventArgs e) {
base.OnEnter(e);
this.BackColor = Color.OrangeRed;
}
protected override void OnLeave(EventArgs e) {
base.OnLeave(e);
this.BackColor = Color.White;
}
}
}
Alternativ kannst du auch per Foreach Schleife über die bestehende Controls itterieren und dann zwei feste Eventhandler allen gewünschten Textbox Controls zuordnen.
Gruß w.
Hi,
Statt "ActiveControl" nehme "Sender".
E.
Zitat von @Florian86:
Wenn ich ActiveControl.Backcolor mache bleiben in der Leave Methode also beim Verlassen des Steuerelementes, diese
Orange und werden nicht weiss
Manchmal sieht man den Wald vor lauter Bäumen nicht ... Wenn ich ActiveControl.Backcolor mache bleiben in der Leave Methode also beim Verlassen des Steuerelementes, diese
Orange und werden nicht weiss
Statt "ActiveControl" nehme "Sender".
private void textBoxAll_Enter(object sender, EventArgs e)
{
Sender.BackColor = Color.OrangeRed;
}
private void textBoxAll_Leave(object sender, EventArgs e)
{
Sender.BackColor = Color.White;
}
E.
Du musst das sender-Object nur als TextBox-Type "Casten" dann meckert die IDE auch nicht mehr
oder auch
Umwandlung und Typkonvertierungen (C#-Programmierhandbuch)
((TextBox)sender).BackColor = ........
(sender as TextBox).BackColor = ......
Umwandlung und Typkonvertierungen (C#-Programmierhandbuch)