【问题标题】:handle ctrl+v in a multiline textbox c#在多行文本框中处理 ctrl+v c#
【发布时间】:2017-06-29 02:43:02
【问题描述】:

我有一个多行文本框,我正在尝试实现全选、复制、粘贴等快捷键(多行似乎禁用了一些本机快捷键)。如果在 Control KeyDown 上,我有这个代码,在 KeyCode 的开关内。

case Keys.A:
    e.Handled = true;
    textBox3.Text = textBox3.Text.Replace(Environment.NewLine, "");
    textBox3.SelectAll();
    break;
case Keys.C:
    e.Handled = true;
    if (textBox3.SelectedText.Length > 0)
    {
        Clipboard.SetText(textBox3.SelectedText);
    }
    break;
case Keys.V:
    e.Handled = true;
    textBox3.Paste(Clipboard.GetText().Replace(Environment.NewLine, ""));
    break;

前两个工作正常,但我无法抑制 (Ctrl+V) 的正常操作(我想在粘贴之前删除换行符)。我不知道是什么原因造成的,所以任何想法都会很棒。

谢谢。

【问题讨论】:

  • 你试过 assgin textBox3.Text 而不是 Paste 方法吗?
  • 您确定要禁止其他键的正常操作吗?选择和复制仍然可以生效,只要您的代码发生在之后,您就不会注意到。您需要在按键输入到达控件之前拦截它。发布一个很好的minimal reproducible example,展示你已经拥有的东西,解释你到目前为止做了什么,为什么你认为它应该起作用,以及具体你不知道什么。跨度>

标签: c# .net winforms textbox keyevent


【解决方案1】:

我必须为所有相同的键添加一个PreviewKeyDown 处理程序,将e.IsInputKey 设置为true。另外,我必须在普通的 keydown 处理程序中添加e.SuppressKeyPress = true;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-19
    • 1970-01-01
    • 1970-01-01
    • 2015-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-21
    相关资源
    最近更新 更多