zoenbo 发表于 2021-4-30 21:26

C#大佬帮我看看这一个问题

本帖最后由 zoenbo 于 2021-5-1 13:44 编辑

<TextBox Width="340" Height="30" MaxLength="30" Text="{Binding Title}" VerticalContentAlignment="Center"/>

这是用在Microsoft Visual C# / Basic .NET(桌面程序)里的,MaxLength我想让它实现最多汉字30个,英文60个字符,这个怎么实现呢?在线等待...

langu 发表于 2021-4-30 21:45

注册文本改变事件,看内容超过没

zoenbo 发表于 2021-4-30 21:55

langu 发表于 2021-4-30 21:45
注册文本改变事件,看内容超过没

我完全不懂这个.NET,目前这个MaxLength要是设30,英文和汉字都是30个,超出内容不会显示。

Rt39 发表于 2021-4-30 22:06

那应该用的是utf-8编码,可能要到业务里控制

zoenbo 发表于 2021-4-30 22:07

Rt39 发表于 2021-4-30 22:06
那应该用的是utf-8编码,可能要到业务里控制
大佬,有没有解决方法呢?百度上一点相关的都没。

gohopo 发表于 2021-4-30 22:13

MaxLength绑定变量,使最大长度可以自己控制,如MaxLength="{Binding MaxLength}".
然后在编辑框的改变事件中判断,如果有中文就MaxLength=30;否则就MaxLength=60;

zoenbo 发表于 2021-4-30 22:16

gohopo 发表于 2021-4-30 22:13
MaxLength绑定变量,使最大长度可以自己控制,如MaxLength="{Binding MaxLength}".
然后在编辑框的改变事件 ...

大佬,能帮我写个判断么?就这个就困扰了五六个小时了,没找到解决方法。

WolfAvenue 发表于 2021-4-30 22:48

这需求,应该可以混合中英文吧。。。只能在文本改变事件里判断了,用正则判断中文

DrCatcher 发表于 2021-4-30 22:49

<TextBox Name="textBox" Width="340" Height="30"VerticalAlignment="Center" TextChanged="textBox_TextChanged" ></TextBox>

      private void textBox_TextChanged(object sender, TextChangedEventArgs e)
      {
            if (textBox.Text.Trim() != null)
            {
                if (Convert.ToInt32(Convert.ToChar(textBox.Text.Substring(0, 1))) < Convert.ToInt32(Convert.ToChar(128)))
                {
                  textBox.MaxLength = 10;
                }
                else
                {
                  textBox.MaxLength = 5;
                }
            }
      }

jonasr 发表于 2021-4-30 22:57

用正则表达式 如果是英文和字符就限制60个否则限制30个汉字

var pattern1 = @"^{5,30}$"//最小5位最大30位的数字+字母 如果需要特殊字符自己在加

然后Match一下   System.Text.RegularExpressions.Regex.IsMatch(你传进来的字符串, pattern1);
页: [1] 2
查看完整版本: C#大佬帮我看看这一个问题