c# - wpf,如何限制TextBox的MaxLength?

标签 c# wpf

<TextBox Height="?" Width="?" AcceptReturn="true" />

高度=随机; 宽度=随机; 例如,高度为 60,宽度为 100。 如何控制输入的文本长度小于TextBox的大小

最佳答案

使用MaxLength

编辑:

等等,什么?您想将字符数限制为文本框的宽度吗?为什么会这样?

编辑2:

您可以使用 Graphics.MeasureString 来测量字符串的长度。这是一个可以完成您想要的操作的扩展方法:

public static class TextBoxExtension
{
    public static int VisibleCharCount(this textBox textBox)
    {
        int count = 0;

        do {
            count++;
            var testString = new string('X', count);
            var stringWidth = System.Drawing.Graphics.MeasureString(testString, textBox.Font);                
        } while (stringWidth < textBox.Width);

        if (stringWidth == textBox.Width) 
            return count;
        else
            return count-1;
    }
}

像这样使用它:

myTextBox.MaxLength = myTextBox.VisibleCharCount();

编辑3:

如果您的 TexBox 是 MultiLine 并且您还想考虑高度,则可以使用采用 Size 的 MeasureString 重载。我让您相应地修改我的示例。

关于c# - wpf,如何限制TextBox的MaxLength?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4334792/

相关文章:

基于组合选择的 UI 元素的 WPF 可见性

c# - 如何使用 Windows 身份验证防止重复的 HTTP 请求

C#.NET : Acquire administrator rights?

c# - 检查数组的所有值是否不同

c# - WPF ComboBox 忽略 ItemsSource 对象上的 ToString 覆盖

c# - 如何在 WPF 中使用 MVVM 在页面和打开的窗口之间导航?

c# - 哪种 C# 设计模式适合在 ASP.NET 中编写自定义工作流程

c# - MVVM WPF : Get usercontrol name from ViewModel

c# - 如何将击键发送到 WebBrowser?

c# - 结合 WPF + WCF + Entity Framework 的好例子