Как редактировать текст для вставки в TextBox? - PullRequest
0 голосов
/ 10 января 2011

У меня есть TextBox Мне нужно отформатировать текст, если он помещен в Ctrl + V

Я пытался:

  String str = Clipboard.GetText();
  (sender as TextBox).Text += str.Replace("\r\n\r\n", "\r\n");

, но этот код выдает исключение

ошибка: Почему не работает Clipboard.GetText?

Ответы [ 3 ]

1 голос
/ 10 января 2011

Отформатируйте текст в обработчике событий TextChanged.

Обновление после комментария:

Вам не нужно ничего делать, просто обработайте событие textchange:

XAML:

<TextBox x:Name="tbTarget" TextChanged="tbTarget_TextChanged" />

Код:

void tbTarget_TextChanged(object sender, TextChangedEventArgs e)
{
  Dim tb = (TextBox)sender;
  tb.Text = tb.Text.ToUpper();
}

Если TextBox предназначен только для вставки текста, cosider устанавливает его свойство IsReadOnly в true.

Обновление после последнего комментария:

Добавьте следующее к вашему классу кода:

public partial class MainWindow : Window
{
  public MainWindow()
  {
    InitializeComponent();
    DataObject.AddPastingHandler(tb, 
      new DataObjectPastingEventHandler(tb_Pasting));      
  }

  private void tb_Pasting(object sender, DataObjectPastingEventArgs e)
  {
    if (e.SourceDataObject.GetDataPresent(DataFormats.Text))
    {
      var text =
        (string)e.SourceDataObject.GetData(DataFormats.Text) ?? string.Empty;
      e.DataObject = new DataObject(DataFormats.Text, text.ToUpper());
    } 
  }
}
0 голосов
/ 10 января 2011

Сначала вы должны захватить событие Вставить, отслеживая сообщения Windows.

Следующая вещь не проверена.

private const int WM_PASTE = 0x0302;
protected override void WndProc(ref Message m)
{
    if (m.Msg == WM_PASTE)
    {
        //Paste Event
    }
}

В событии вставки вы можете получить текущий текст в textBox. Здесь текст, вставленный из буфера обмена, может быть вставлен в текстовое поле или все еще в буфере обмена. Вы можете легко проверить это.

Если текст вставлен, вы можете получить textBox1.Text, а если нет Clipboard.getText(). Затем отредактируйте текст и поместите его обратно в текстовое поле.

0 голосов
/ 10 января 2011

У меня есть TextBox, мне нужно отформатировать текст, если он помещен в Ctrl + V

Рассмотрим обработку события TextChanged ?

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