winforms C# windows窗体我已经创建了20个文本框

6yoyoihd  于 2022-11-16  发布在  C#
关注(0)|答案(1)|浏览(186)

晚上好。在C# windows窗体中,我创建了20个文本框,它们都有相同的数字数据。在代码中,我输入了一条错误消息,它说只接受数字数据。代码如下:

if (System.Text.RegularExpressions.Regex.IsMatch(textBox1.Text, @"^[0-9]+$") == false)
        {
            MessageBox.Show("C'è un campo con caratere non valido. E' richiesto solo numeri.");
        }

我的问题是,为了避免为每个文本框编写20次代码,有没有办法简化工作?

11dmarpk

11dmarpk1#

为什么不简单地使用NumericUpDown控件或自定义NumericUpDown(它没有微调器,但具有int的AsInteger属性)来禁止非数字值。

public class SpecialNumericUpDown : NumericUpDown
{

        public SpecialNumericUpDown()
        {
            Controls[0].Hide();
            TextAlign = HorizontalAlignment.Right;
            // optionally set min and max values here or in the property window
        }
        protected override void OnTextBoxResize(object source, EventArgs e)
        {
            Controls[1].Width = Width - 4;
        }
    
        [Browsable(false)] public int AsInteger => (int)Value;
    
        public delegate void TriggerDelegate();
    
        public event TriggerDelegate TriggerEvent;
        protected override void OnKeyDown(KeyEventArgs e)
        {
            if (e.KeyCode == (Keys.Return))
            {
                e.Handled = true;
                e.SuppressKeyPress = true;
    
                TriggerEvent?.Invoke();
    
                return;
            }
    
            base.OnKeyDown(e);
        }
    
    }

相关问题