1.新建WPF应用程序;
2.打开MainWindow.xaml文件,拖入一个TextBox控件;
3.打开MainWindow.xaml.cs文件,输入后面代码即可。
效果图:(本示例是限制为6字节,所以两个汉字两个数字刚好6字节,可以在代码中自行更改)
(1)MainWindow.xaml文件代码如下:
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="187*"/>
<ColumnDefinition Width="606*"/>
</Grid.ColumnDefinitions>
<TextBox x:Name="TextBox1" HorizontalAlignment="Left"
Height="41" Margin="97.873,134,0,0" TextWrapping="Wrap" VerticalAlignment="Top"
Width="201" FontSize="20" TextAlignment="Center" Grid.Column="1"
TextChanged="textBox1_TextChanged"/>
<!--TextChanged属性为MainWindow.xaml.cs文件中的事件-->
</Grid>
(2)MainWindow.xaml.cs文件代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace Type
{
/// <summary>
/// MainWindow.xaml 的交互逻辑
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
//判断字节输入长度
//public static bool OutOfLength(string str, int len = 6)
//{
// byte[] bt = System.Text.Encoding.Default.GetBytes(str.Trim());
// return bt.Length > len;
//}
public string VerStr(System.Windows.Controls.TextBox textbox, int max)
//在winform中可能为public string VerStr(System.Windows.Form.TextBox textbox, int max)
{
int n = 0;
string str = "";
foreach (char s in textbox.Text)
{
char[] c = s.ToString().ToCharArray();
for (int i = 0; i < c.Length; i++)
{
str = str + s.ToString();
byte[] b = System.Text.Encoding.Unicode.GetBytes(c, i, 1);
if (b.Length == 2)
{
if (b[1] != 0)
n = n + 2;
else
n++;
}
}
if (n >= max)
break;
}
return str;
}
private void textBox1_TextChanged(object sender, System.EventArgs e)
{
this.TextBox1.Select(this.TextBox1.Text.Length, 0);//设置光标始终停止末尾
int m = this.TextBox1.SelectionStart;
//设置编码为UTF-8或者GBK,最好GBK
int n = System.Text.Encoding.GetEncoding("GBK").GetByteCount(this.TextBox1.Text);
if (n >= 6)//最大字节数设置
{
this.TextBox1.Text = VerStr(this.TextBox1, 6);
this.TextBox1.SelectionStart = m;
InputMethod.SetIsInputMethodEnabled(TextBox1, false);//设置超出固定字节长度后禁止输入
}
}
}
}
freesheep720 作