Как использовать ключ вставки (как в традиционных окнах) для приложения WPF 4? - PullRequest
2 голосов
/ 08 сентября 2010

Хорошо, я знаю, что в новых версиях Windows по умолчанию ключ вставки не используется, и вы должны его запрограммировать.Я хочу иметь возможность вводить текстовое поле и перезаписывать содержимое, как в старых окнах, когда вы можете активировать клавишу вставки.Это только для моего приложения WPF 4, VB.net.

Обновленная информация:

Вот что я имел в виду: мне нужно имитировать старые терминалы.Мне нужно активировать режим перезаписи программно для всех элементов управления.То же, что и клавиша «Вставить» на клавиатуре.Только этот ключ не работает в среде WPF.

Пример Я ввожу слово мир поверх текстового поля с надписью «Hello!»:

Текстовое поле началось как: [Hello!]

Текстовое поле теперь [Мир!]

Вы заметите, что восклицательный знак из одного символа остался, потому что в мире недостаточно символов для замены '!'.

Ответы [ 2 ]

2 голосов
/ 16 сентября 2010

Попробуйте (используйте этот элемент управления вместо ванили TextBox es):

public class InsertModeTextBox : TextBox
{
    public InsertModeTextBox()
    {
        InitializeComponent();
    }

    protected override void OnTextInput(TextCompositionEventArgs e)
    {
        var txt = e.Text;
        var len = txt.Length;
        var pos = CaretIndex;

        var builder = new StringBuilder();
        if (pos > 0) builder.Append(Text.Substring(0, pos)); // text before caret
        builder.Append(txt); // new text
        if (Text.Length > pos + len) builder.Append(Text.Substring(pos + len)); // text after overwrite

        Text = builder.ToString();
        CaretIndex = pos + len;

        e.Handled = true;
    }
}
1 голос
/ 08 сентября 2010

В WPF 4 нажатие клавиши «Вставить», когда текстовое поле имеет фокус, активирует режим перезаписи. Вы имеете в виду одновременное переключение между режимами вставки и перезаписи для всех текстовых полей в окне?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...