大写数据在应用程序级别输入

时间:2014-01-25 07:42:36

标签: c# winforms

我们的一位客户希望所有输入的数据都是大写的。我不想通过文本框等来做文本框。

是否可以在应用程序级别执行此操作?

3 个答案:

答案 0 :(得分:1)

解决方案1:如果您想在UpperCase中阅读UserInput,可以使用ToUpper()方法。

试试这个:

String str=textBox1.Text.ToUpper();

解决方案2:

如果您要显示并阅读UpperCase中的UserInput,您可以处理TextChanged的{​​{1}}事件,如下所示:

TextBox

答案 1 :(得分:0)

您可以编写一次KeyPress事件。

   private void txtBox_KeyPress(object sender, KeyPressEventArgs e)
   {
      if (e.KeyChar >= 'a' && e.KeyChar <= 'z')
      e.KeyChar -= (char)32;
   }

32只是小写和大写字母之间ASCII值的差异。

答案 2 :(得分:0)

您可以对TextBox控件进行子类化,创建仅使用大写的派生类,并使用派生类而不是原始TextBox。

这是实现它的一种可能方式:

using System;

namespace UpperCaseTextBox
{
    public class UpperCaseTextBox : System.Windows.Forms.TextBox
    {
        protected override void OnTextChanged(EventArgs e)
        {
            var selectionStart = this.SelectionStart;
            var selectionLength = this.SelectionLength;
            this.Text = this.Text.ToUpper();
            this.SelectionStart = selectionStart;
            this.SelectionLength = selectionLength;
            base.OnTextChanged(e);
        }
    }
}

上述代码已经过测试,但仅供演示。

注意1:我建议在一个单独的dll项目中执行此操作,它将更容易使用(您必须编译构建控件,然后将其放入表单设计器中)并进行维护。如果您决定创建dll,请记住您需要在dll中向System.Windows.Forms添加引用,并且还需要在winforms应用程序中引用您的dll以使用它。

注意2:您可能有兴趣通过添加新属性来创建此变体,以将TextBox设置为普通,仅限大写或小写。您可能还想创建一种机制来控制AppDomain中所有实例的此属性(提示:可以是静态字段)。为什么?因为你不知道客户还要求下一步。