【问题标题】:prevent repetitive code in C#防止 C# 中的重复代码
【发布时间】:2014-04-03 19:11:06
【问题描述】:

我正在使用 C# 以 win 形式编写桌面应用程序。我使用以下代码将我的文本框转换为数字文本框:

 private void txtPrice_KeyPress(object sender, KeyPressEventArgs e)
    {
        //if (!char.IsControl(e.KeyChar)
        //   && !char.IsDigit(e.KeyChar)
        //   && e.KeyChar != '.')
        //          {
        //           e.Handled = true;
        //          }
        if(!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar))
        {
            e.Handled = true; 
        }              
    }

上面的代码只写一次,而不是每次都为表单中的每个文本框写一次,是不是蚂蚁设计模式或技术?

【问题讨论】:

  • 如果您在单个表单上,只需将多个 TextBox 控件上的 KeyPress 事件设置为 txtPrice_KeyPress。

标签: c# .net events design-patterns


【解决方案1】:

子类化 TextBox 类,向其中添加数字检查,并使用新的文本框代替通常的文本框。

示例
How to: Create a Numeric Text Box

【讨论】:

    【解决方案2】:

    创建一个继承 TextBoxBase 类的名为数字文本框的新组件。

    您在此处编写的代码将不起作用,因为有人可以复制和粘贴文本值。

    您必须为此覆盖 text_change 事件。

    【讨论】:

      【解决方案3】:

      如果您想要定制,罗伯特的回答是最好的选择。或者,如果您不知道,可以使用内置的NumericUpDown control

      【讨论】:

        【解决方案4】:

        创建一个方法....例如

         private void press(object sender, KeyPressEventArgs e)
            {
              //what ever code here,,,,,,i dont care  
        
            }
        

        //我假设您使用的是visual studio.net

        //突出显示或选择您的文本框或文本框....

        //然后进入属性窗口,,,,,

        //然后点击闪电图标....或事件图标

        //然后转到您的 KeyPress 事件-----并单击下拉按钮

        //之后添加你想通过Control实现的Method.......

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-10-03
          • 2019-01-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多