Переопределить вставку в TextBox - PullRequest
12 голосов
/ 21 октября 2011

Я хочу переопределить функцию вставки, когда в определенном текстовом поле.Когда текст вставляется в это текстовое поле, я хочу, чтобы он выполнил следующее:

AddressTextBox.Text = Clipboard.GetText().Replace(Environment.NewLine, " ");

(переход с многострочного на одиночный)

Как я могу это сделать?

Ответы [ 2 ]

33 голосов
/ 21 октября 2011

Это возможно, вы можете перехватить низкоуровневое сообщение Windows, которое получает собственный элемент управления TextBox, который говорит ему вставить из буфера обмена.Сообщение WM_PASTE.Генерируется как при нажатии клавиш Ctrl + V с помощью клавиатуры, так и при использовании команды вставки в контекстном меню.Вы ловите его, переопределяя метод WndProc() элемента управления, выполняя вставку по желанию, и not передает его в базовый класс.

Добавьте новый класс в свой проект и скопируйте / вставьтекод показан ниже.Компиляция.Перетащите новый элемент управления из верхней части панели инструментов на форму, заменив существующий.

using System;
using System.Windows.Forms;

class MyTextBox : TextBox {
    protected override void WndProc(ref Message m) {
        // Trap WM_PASTE:
        if (m.Msg == 0x302 && Clipboard.ContainsText()) {
            this.SelectedText = Clipboard.GetText().Replace('\n', ' ');
            return;
        }
        base.WndProc(ref m);
    }
}
5 голосов
/ 21 октября 2011

Чтобы перехватить сообщения в элементе управления textbox, выведите класс из TexBox и реализовать

class MyTB : System.Windows.Forms.TextBox
{

    protected override void WndProc(ref Message m)
    {
        switch (m.Msg)
        {

            case 0x302: //WM_PASTE
                {
                    AddressTextBox.Text = Clipboard.GetText().Replace(Environment.NewLine, " ");
                    break;
                }

        }

        base.WndProc(ref m);
    }

}

предложено здесь

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