Выделение в TextBox с правой стороны

203
16 ноября 2017, 01:41

Текстовое поле с шириной Auto не имеет отступов внутри себя, границы текстового поля подпирают текст, выделить его с правого края крайне неудобно. Если задать Padding, то и курсор при наведении на получившийся отступ будет Arrow, и при клике с дальнейшем движении мыши влево выделения не произойдет. Таких проблем не возникает, если немного увеличить ширину текстового поля. Но нельзя - предполагается ввод текста.

В VS в редактируемых строках элементов интерфейса есть отступ.

В Word также отступы с трех сторон позволяют выделять текст при клике за границами текстовых символов (только слева поле имеет другие свойства). Что я сделал:

<Canvas Height="{Binding ElementName=tbEdit, Path=ActualHeight}">
     <TextBox Name="tbEdit" Text="MainWindow.xaml"
              Padding="0,0,20,0"
              MouseEnter="TextBox_MouseEnter"
              PreviewMouseDown="TextBox_MouseDown"
              TextChanged="TextBox_TextChanged"
              >
     </TextBox>
</Canvas>
void TextBox_MouseEnter(object sender, MouseEventArgs e)
    {
        var tbEdit = sender as TextBox;
        tbEdit.Cursor = Cursors.IBeam;
    }
    void TextBox_MouseDown(object sender, MouseButtonEventArgs e)
    {
        var tbEdit = sender as TextBox;
        var widthTextBox = tbEdit.ActualWidth;
        tbEdit.Padding = new Thickness(0);
        tbEdit.MinWidth = widthTextBox;
    }
    private void TextBox_TextChanged(object sender, TextChangedEventArgs e)
    {
        TextBox tbEdit = sender as TextBox;
        double pad = 20.0;
        if (tbEdit.Padding.Right < pad)
        {
            tbEdit.MinWidth = 10;
            tbEdit.Padding = new Thickness(0, 0, pad, 0);
        }    
    }

Вопрос: можно ли сделать проще?

READ ALSO
Аналог KeyData для Keypress в c#

Аналог KeyData для Keypress в c#

Хочу реализовать возможность движения объекта при зажатии клавишиРанее использовал form keydown, но получается не очень плавно:

339
Добавление UserControl-ов по центру FlowLayoutPanel

Добавление UserControl-ов по центру FlowLayoutPanel

При добавлении UserControl-ов в FlowLayoutPanel, они прижимаются к левому краю

295
Поля подстановки в VisualStudio

Поля подстановки в VisualStudio

создал приложение WindowsForms, подключил базу данных, перетащил таблицы на форму, добавил и привязал BindingNavigatorтак как таблиц много, и все они связаны,...

249
Подавление CanExecute интерфейса ICommand UWP

Подавление CanExecute интерфейса ICommand UWP

На странице, реализующей вход в систему, есть кнопка с привязанной командойКоманда реализует интерфейс ICommand, а метод CanExecute проверяет возможность...

181