Try to inherit from the ancestor of NumericUpDown : UpDownBase and limit the size of the control to the size of the button area:
using System.Windows.Forms; using System.Reflection; using System.Drawing; public class UpDownControl : UpDownBase { private readonly Control upDownButtons; public UpDownControl() { // 袛芯褋褌邪械屑 internal 褋胁芯泄褋褌胁芯 UpDownButtonsInternal var prop = GetType().GetProperty("UpDownButtonsInternal", BindingFlags.NonPublic | BindingFlags.Instance); if (prop != null) upDownButtons = (Control)prop.GetValue(this, null); } protected override void OnSizeChanged(EventArgs e) { base.OnSizeChanged(e); int gapWidth = Width - upDownButtons.Right + 1; // 袥懈斜芯 const int gapWidth = 2; Size = new Size(upDownButtons.Width + gapWidth, upDownButtons.Height); } public override void DownButton() { } public override void UpButton() { } protected override void UpdateEditText() { } }
Button press events will arrive in the DownButton and UpButton respectively.