Calling base Text method on custom TextBox
Posted
by The Demigeek
on Stack Overflow
See other posts from Stack Overflow
or by The Demigeek
Published on 2009-07-13T18:22:04Z
Indexed on
2010/04/13
22:03 UTC
Read the original article
Hit count: 186
inheritance
I'm trying to create a CurrencyTextBox that inherits from TextBox. I'm seeing some really weird behavior that I just don't understand.
After lots of testing, I think I can summarize as follows:
In the class code, when I access base.Text (to get the textbox's text), I'm actually getting the return value of my overridden Text property.
I thought the base keyword would ensure that the underlying object's methods get called.
To demonstrate:
public class cTestTextBox : System.Windows.Forms.TextBox
{
string strText = "";
public cTestTextBox()
{
SetVal("AAA");
base.Text = "TEST";
}
public override string Text
{
get
{
string s = strText;
s = "++" + s + "++";
return s;
}
}
public void SetVal(string val)
{
strText = val;
}
}
Place this control on a form and set a breakpoint on the constructor. Run the app. Hover your mouse over the base.Text expression. Note that the tooltip shows you the value of the overridden property, not the base property. Execute the SetVal() statement and again hover your mouse over the base.Text expression. Note that the tooltop shows you the value of the overridden property, not the base property.
How do I reliably access the Text property of the textbox from which I'm inheriting?
© Stack Overflow or respective owner