C# 在应用程序级别输入大写数据
我们的一个客户希望所有输入的数据都是大写的。我不想一个接一个地做C# 在应用程序级别输入大写数据,c#,winforms,C#,Winforms,我们的一个客户希望所有输入的数据都是大写的。我不想一个接一个地做 有什么方法可以在应用程序级别执行此操作吗?解决方案1:如果您想以大写形式读取用户输入,可以使用ToUpper()方法 试试这个: String str=textBox1.Text.ToUpper(); 解决方案2: 如果您想以大写显示和读取用户输入,您可以如下处理文本框的文本更改事件: private void textBox1_TextChanged(object sender, EventArgs e) {
有什么方法可以在应用程序级别执行此操作吗?解决方案1:如果您想以
大写形式读取用户输入,可以使用ToUpper()
方法
试试这个:
String str=textBox1.Text.ToUpper();
解决方案2:
如果您想以大写
显示和读取用户输入,您可以如下处理文本框
的文本更改
事件:
private void textBox1_TextChanged(object sender, EventArgs e)
{
textBox1.Text = textBox1.Text.ToUpper();
textBox1.Select(textBox1.Text.Length, 0);
}
您可以编写一次按键事件
private void txtBox_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar >= 'a' && e.KeyChar <= 'z')
e.KeyChar -= (char)32;
}
private void txtBox\u按键(对象发送器,按键事件参数e)
{
如果(e.KeyChar>='a'&&e.KeyChar您可以对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:您可能有兴趣通过添加新属性来创建此属性的变体,以将文本框设置为普通、仅大写或仅小写。您可能还希望创建一种机制来控制AppDomain中所有实例的此属性(提示:这可以是静态字段).为什么?因为你不知道客户下一步还会要求什么。什么是应用程序级别?你可以始终使用.ToUpper()
应用程序中有许多表单。网格控件、文本框和表单上的文本框。我的意思是,如果可能的话,我想在一个点上集中实现它。可能挂接按键等。所有数据输入都必须大写。不仅是特定的。可能挂接按键等的消息队列可以解决它。为表单实现这一点会更好.虽然这是一个巧妙的技巧,但当用户输入基本拉丁字母表之外的字母时,它将失败。