Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

C# WinForms numericUpDown control (removing the spin box)

Tags:

c#

winforms

After a ton of googling, I couldn't come up with anything..

Is there any way to get a numericUpDown control that does not have the spin box?

I need a textbox that only accepts integers, and a numericUpDown has the perfect behavior that I am looking for. However, I need to hide the numeric spinbox for space constraints.

When I try to do something like numericUpDown.Controls[0].Hide() or numericUpDown.Controls.RemoveAt(0), the spinbox disappears but leaves an unusuable void where the spinbox used to be. Thus the numbers scroll at that point, meaning the space is wasted..

Is there any other solution to this?

Thanks..

like image 254
krebstar Avatar asked Jun 03 '11 03:06

krebstar


1 Answers

You can inherit from NumericUpDown. The trick is to hide control when the control is created.

public class NumericUpDownWitoutButtons : NumericUpDown
{
    public NumericUpDownWitoutButtons()
    {
        Controls[0].Visible = false;
    }

    protected override void OnPaint(PaintEventArgs e)
    {
        e.Graphics.Clear(SystemColors.Window);
        base.OnPaint(e);
    }
}

If the place were buttons should be looks weird, override OnPaint too.

Also, you probably don't need NumericUpDown. Would it be enough to validate that only digits can by typed in? C# Numbers Only Textbox

like image 148
Alex Aza Avatar answered Oct 14 '22 18:10

Alex Aza