I want to program an app where the user can enter a number in a NumericUpDown Control. There are some conditions to the number (e.g. range) that are determined in run time. To give feedback to the user I changed BackColor of NumericUpDown to red when at least one condition is not met. So far it works as i expect it to do.
Now i wanted to add a ToolTip to NumericUpDown to explain why the number was “wrong”. When I use the event NumericUpDown_BackColorChanged to adjust the text, the event just won’t “trigger”. Why is that?
I guess it has to do with the composite character of NumericUpDown as Hans Passant has stated here and here. But I am not sure. TY for the help in advance.
private void numericUpDown1_ValueChanged(object sender, EventArgs e)
{
if (numericUpDown1.Value == 42)
{
numericUpDown1.BackColor = Color.Red;
}
else
{
numericUpDown1.BackColor = System.Drawing.SystemColors.Window;
}
}
private void numericUpDown1_BackColorChanged(object sender, EventArgs e)
{
//something epic should happen
//but somehow my program never reaches these lines :(
}
I’ve confirmed that the
NumericUpDown.BackColorproperty setter indeed does not callOnBackColorChanged(in .NET 4.0 at least).I assume this happens because the
BackColorproperty has been overriden inUpDownBaseto also set theBackColorof the composited controls insideNumericUpDownand maybe someone forgot to call the base implementation (I’d love to hear from some of the WinForms gurus here).What you can do is create a
FixedNumericUpDowncontrol that inherits fromNumericUpDownand overrides theBackColorproperty as such: