如果TextBox宽度大于75,如何删除最后输入的字符

时间:2019-03-17 00:30:56

标签: c# wpf vb.net

1-将以下代码复制并粘贴到 MainWindow.xaml 文件中。

<Window x:Class="MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
    <TextBox x:Name="TextBox1" Height="25" HorizontalAlignment="Left" Text="Hello people"/>
    <Label x:Name="LabelForTestingNeeds1" Height="25" HorizontalAlignment="Left" Margin="0,100,0,0" Content="{Binding ActualWidth, ElementName=TextBox1}"/>
    <Label x:Name="LabelForTestingNeeds2" Height="25" HorizontalAlignment="Left" Margin="0,150,0,0" Content="{Binding Text.Length, ElementName=TextBox1}"/>
</Grid>
</Window>

2-将以下代码复制并粘贴到后面的代码文件中。

Class MainWindow
    Private Sub TextBox1_TextChanged(sender As Object, e As TextChangedEventArgs) Handles TextBox1.TextChanged
        If TextBox1.ActualWidth > 75 Then
            'Delete last entering character(s)
            'Or prevent entering a new character(s)
        End If
    End Sub
End Class

3-运行此项目,并将一些字符添加到TextBox1中。

如果TextBox1宽度大于75,如何删除最后输入的字符?

如果TextBox1的宽度大于75,如何防止在TextBox1中输入字符?

  

所以这个问题是关于文本框的宽度(以像素为单位)。

2 个答案:

答案 0 :(得分:1)

这是文本更改事件,因此您不能阻止输入字符,但这应该可以工作

Class MainWindow
    Private Sub TextBox1_TextChanged(sender As Object, e As TextChangedEventArgs) Handles TextBox1.TextChanged
        If TextBox1.Text.length > 75 Then
            TextBox1.Text = TextBox1.Text.Substring(0, 75)
        End If
    End Sub
End Class

答案 1 :(得分:0)

绘制文本的尺寸不仅取决于注释时使用的字符,还取决于字体类型和字体大小。

有一个专门设计用于计算此值的类,即FormattedText命名空间中的System.Windows.Media

只需创建一个新对象,其中包含有关要绘制的文本,其字体和其他属性的信息:

var formattedText = new System.Windows.Media.FormattedText("my text", CultureInfo.InvariantCulture, FlowDirection.LeftToRight, new Typeface("MyFont"), 32, Brushes.Black);
var width = formattedText.Width; //use to limit or do whatever