【问题标题】:C# WinForms numericUpDown control (removing the spin box)C# WinForms numericUpDown 控件(去掉旋转框)
【发布时间】:2017-06-10 03:34:02
【问题描述】:

经过大量的谷歌搜索,我想不出任何东西..

有没有办法得到一个没有旋转框的 numericUpDown 控件?

我需要一个只接受整数的文本框,并且 numericUpDown 具有我正在寻找的完美行为。但是,由于空间限制,我需要隐藏数字旋转框。

当我尝试执行 numericUpDown.Controls[0].Hide() 或 numericUpDown.Controls.RemoveAt(0) 之类的操作时,微调框会消失,但会在微调框曾经所在的位置留下无法使用的空白。因此,数字在该点滚动,这意味着空间被浪费了..

还有其他解决办法吗?

谢谢..

【问题讨论】:

    标签: c# winforms


    【解决方案1】:

    您可以从 NumericUpDown 继承。诀窍是在创建控件时隐藏控件。

    public class NumericUpDownWitoutButtons : NumericUpDown
    {
        public NumericUpDownWitoutButtons()
        {
            Controls[0].Visible = false;
        }
    
        protected override void OnPaint(PaintEventArgs e)
        {
            e.Graphics.Clear(SystemColors.Window);
            base.OnPaint(e);
        }
    }
    

    如果这个地方是按钮应该看起来很奇怪,也覆盖 OnPaint。

    另外,您可能不需要 NumericUpDown。验证只能输入数字就足够了吗? C# Numbers Only Textbox

    【讨论】:

    • 我刚试过,对不起,它不起作用.. 文本框的右侧有一个无法使用的空间.. 文本在碰到 UpDown 按钮的空白处时开始滚动曾经是:(
    • 您好,感谢您的帮助.. 但它仍然没有解决我的问题.. 这是一张图片向您展示我在说什么:imgur.com/EP1OD
    • 我真的很想使用 numericUpDown 控件,因为我喜欢你不能在其中粘贴任何其他内容。但我想如果这不起作用,我将不得不使用常规文本框.. :S
    • 哎呀.. 看起来你可以粘贴到 numericUpDown 控件中:(
    • 这对我也有好处,确实用于箭头的空间仍然存在。希望客户会喜欢它的方式:)
    【解决方案2】:

    我决定禁用箭头按钮,这样比试图隐藏或删除它们更丑。

    紧接在这个样板代码之后:

    internal MainWin()
    {
        InitializeComponent();
    

    ,添加这个:

        myNumericUpDown.Controls[0].Enabled = false;  // Disable the arrow buttons.
    

    另外:在控件的属性中将InterceptArrowKeys 设置为false,以防止箭头键(在键盘上)递增和递减myNumericUpDown.Value

    坏方法:

        myNumericUpDown.Controls[0].Hide();  // Hide the arrow buttons.
        // This leaves a gray patch that turns white after minimize-and-restore.
    

        myNumericUpDown.Controls.RemoveAt(0);  // Remove the arrow buttons.
        // This leaves a gray patch that turns white after minimize-and-restore.
    

    半坏道:

    忘记上面的。仅在控件的属性中将Increment 设置为0。箭头按钮仍然起作用,箭头键(在键盘上)仍然被拦截,但现在它们什么也不做。遗憾的是,无操作按钮可能不如禁用的箭头按钮直观。 (我很惊讶它甚至接受Increment = 0。这个控件的智能版本会在增量为 0 时巧妙地隐藏箭头按钮。)

    其他解决方案:

    数字框可以实现为TextBox,带有将输入限制为仅数字的额外代码,并返回或宣布一个数值(decimal 或您的选择)。 (搜索会发现许多不同的、复杂的示例。)粘贴的数据与击键不同,因此需要额外的代码来处理粘贴。 (优点:您可以使数字框比内置的NumericUpDown 更智能:NumericUpDown 愚蠢地接受并显示.,直到用户按下 Enter 或离开该字段,即使您指定了 DecimalPlaces = 0;它也接受并显示多个小数点,这是废话。)

    integer-box 比接受实数(可选地以浮点表示法)并返回实数类型(floatdouble、或decimal)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-07
      • 1970-01-01
      • 1970-01-01
      • 2011-07-05
      • 1970-01-01
      • 2011-01-24
      • 2011-02-10
      • 1970-01-01
      相关资源
      最近更新 更多