Category / Section
How to customize the BackColor, ForeColor of TextBoxExt when its Visualstyle is enabled?
2 mins read
The BackColor of the TextBoxExt is customized based on the Visual style appearance. When Visual style is set as Office2007 or Office2010 style in TextBoxExt, the bordercolor and backcolor of the TextBoxExt is specified in source level. So, the default backcolor of the TextBoxExt gets applied when it is lost focus. You can achieve this requirement by creating custom control that is inherited from TextBoxExt and overriding the following events.
1)OnGotFocus
2)OnLostFocus
The following code example demonstrates the same.
C#
class TextBoxAdv: TextBoxExt { protected override void OnLostFocus(EventArgs e) { //To avoid triggering OnLostFocus method, comment the below line. //base.OnLostFocus(e); } protected override void OnGotFocus(EventArgs e) { //To avoid triggering OnGotFocus method, comment the below line. //base.OnGotFocus(e); } } //To change the backcolor void textBoxAdv1_TextChanged(object sender, EventArgs e) { textBoxAdv1.BackColor = textBoxAdv1.Text == textBoxAdv1.Tag.ToString() ? textBoxAdv1.BackColor : Color.Red; } //To change the backcolor void textBoxAdv2_TextChanged(object sender, EventArgs e) { textBoxAdv2.BackColor = textBoxAdv2.Text == textBoxAdv2.Tag.ToString() ? textBoxAdv2.BackColor : Color.Red; }
VB
Class TextBoxAdv Inherits TextBoxExt Protected Overrides Sub OnLostFocus(ByVal e As EventArgs) 'To avoid triggering OnLostFocus method, comment the below line. 'base.OnLostFocus(e); End Sub Protected Overrides Sub OnGotFocus(ByVal e As EventArgs) 'To avoid triggering OnGotFocus method, comment the below line. 'base.OnGotFocus(e); End Sub End Class 'To change the backcolor Private Sub textBoxAdv1_TextChanged(ByVal sender As Object, ByVal e As EventArgs) textBoxAdv1.BackColor = If(textBoxAdv1.Text = textBoxAdv1.Tag.ToString(), textBoxAdv1.BackColor, Color.Red) End Sub 'To change the backcolor Private Sub textBoxAdv2_TextChanged(ByVal sender As Object, ByVal e As EventArgs) textBoxAdv2.BackColor = If(textBoxAdv2.Text = textBoxAdv2.Tag.ToString(), textBoxAdv2.BackColor, Color.Red) End Sub
The following screenshots illustrate the output.
Figure 1: Before overriding the functions
Figure 2: After overriding the functions
Sample Links