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中输入字符?
所以这个问题是关于文本框的宽度(以像素为单位)。
答案 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