Q1:如何让文本框的录入信息自动做全角转半角转变?
首先,找了一个全角转半角的函数:
public static string Q2B(string input)
{
char[] c = input.ToCharArray();
for (int i = 0; i < c.Length; i++)
{
if (c[i] == 12288)
{
c[i] = (char)32;
continue;
}
if (c[i] > 65280 && c[i] < 65375)
{
c[i] = (char)(c[i] - 65248);
}
}
return new string(c);
}
将其应用到我的窗体中,粘贴在构造函数后面,
接下来,如何使用呢?
private void textBox1_TextChanged(object sender, EventArgs e)
{
textBox1.Text = ToDBC(textBox1.Text.Trim());
}
效果:的确是转换成半角了,可是每次输入数字的时候,光标都跑到文本的最前方去了,效果不好,如何修改呢?
加一条
private void textBox1_TextChanged(object sender, EventArgs e)
{
textBox1.Text = ToDBC(textBox1.Text.Trim());
textBox1.SelectionStart = textBox1.TextLength;
}
效果:这次有所改进,输入数据后,光标都是在文本后面了。但是,有个问题:如果想在现有文本中间,补充插入信息,就麻烦了,输入一个数字,光标就自动跳到文本结尾处了,
如何解决这个问题呢?
能否将textBox1.text赋值为一个变量 string aa=textBox1.text.Trim();在焦点离开textBox1的时候,做一次全角到半角的转换?
我现在没有答案-------------------------------------------------------!
我目前使用的方法是,将全角到半角的转换工作放在了保存按钮中完成。
private void button2_Click(object sender, EventArgs e)
{
textBox1.Text = Q2B(textBox1.Text.Trim());
textBox2.Text = Q2B(textBox2.Text.Trim());
textBox3.Text = Q2B(textBox3.Text.Trim());
}
2009-11-7