Как удалить последний введенный символ (ы), если ширина TextBox больше 75 - PullRequest
0 голосов
/ 17 марта 2019

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, если ширина TextBox1 больше 75?

Итак, этот вопрос касается ширины текстового поля в пикселях.

Ответы [ 2 ]

1 голос
/ 17 марта 2019

Это событие изменения текста, поэтому вы не можете запретить ввод символов, но это должно сработать

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
0 голосов
/ 17 марта 2019

Размеры нарисованного текста зависят не только от символов, используемых при комментировании, но также от типа шрифта и размера шрифта.

Существует класс, специально разработанный для этого, а именно 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...