Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何允许在Winforms文本框上使用CTRL-V(粘贴)?_C#_.net_Winforms - Fatal编程技术网

C# 如何允许在Winforms文本框上使用CTRL-V(粘贴)?

C# 如何允许在Winforms文本框上使用CTRL-V(粘贴)?,c#,.net,winforms,C#,.net,Winforms,我在windows窗体上有几个文本框 我无法使用CTRL-V将文本粘贴到其中任何一个,尽管我仍然可以右键单击并选择“粘贴”。这很烦人 我尝试过将表单的KeyPreview设置为true和false。TextBox.ShortcutsEnabled也是正确的。您发布的代码肯定与您的Ctrl+V问题无关。除非你发布更多的代码,否则我不能告诉你更多 Ctrl+V不需要特殊代码,但我的一个猜测是确保您已设置为True以下代码应该会有所帮助: private void textBox1_KeyUp(obj

我在windows窗体上有几个文本框

我无法使用CTRL-V将文本粘贴到其中任何一个,尽管我仍然可以右键单击并选择“粘贴”。这很烦人


我尝试过将表单的KeyPreview设置为true和false。TextBox.ShortcutsEnabled也是正确的。

您发布的代码肯定与您的Ctrl+V问题无关。除非你发布更多的代码,否则我不能告诉你更多


Ctrl+V不需要特殊代码,但我的一个猜测是确保您已设置为
True

以下代码应该会有所帮助:

private void textBox1_KeyUp(object sender, KeyEventArgs e) {
  if (e.KeyData == Keys.V && e.Modifiers == Keys.Control)
    (sender as Textbox).Paste();
}

检查表单上是否有包含Ctrl-V快捷键的菜单。

是的。。我知道答案是肯定的,但我想我会把我的20美分扔进去只是为了好玩。我也有类似的问题。将TextBox.ShortcutsEnabled值设置为True对我没有任何帮助。我很惊讶地看到微软在这里留下的便条:关于这个问题。至少可以说很有趣


有鉴于此,我只是通过Webleeuw在文章中指出的键偶数处理程序实现了该功能。

我也遇到了同样的问题。经过大量的谷歌搜索,我终于找到了解决办法。这是因为在应用程序中,已经定义了ctrl+v快捷方式(编辑菜单->粘贴)。删除此项后…对我来说效果很好…希望有帮助….

当多行属性值为true时,TextBox控件不支持CTRL+A快捷键。

您可以从窗体的designer.cs/.vb窗体对已分配给其他控件的相同快捷键进行注释。 在我的例子中,我用下面的方法解决了菜单问题

//this.copyToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)
((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.C)));

转到控件的属性:

属性>行为>快捷方式已启用=真


作业完成-现在将接受此控件的默认windows快捷方式笔划

转到文本框属性->行为->允许下拉设置为真。

如果其他没有事件的文本框执行相同的操作,则与此代码没有实际关联,嗯?同意,我编辑了问题以反映这一点。所讨论的表单是“子”表单吗?@Josh,是的。请参阅我对已接受答案的评论。谢谢,我编辑了问题,但这应该是一个评论。这是一个很好的解决方法,但我还必须添加剪切和复制代码。我更愿意返回默认行为。@Josh:不在我的环境中。“v”仍然是“v”,而控件和“v”键的组合变成了粘贴操作。我相信Josh混淆了|和| |运算符。我认为您也应该将e设置为true。此解决方案对我有效。我把所有文本框都指向同一个处理程序,从而使它成为通用的。(在form designer中全部选中,然后转到属性事件)Yeah添加了e.Handled=true;不需要剪切特定代码。Cntr-c在一个文本框中选择一些文本,然后Cntrl-v将其粘贴到另一个文本框中。:)答对 了表单本身没有菜单,但其MDI父级有菜单。这是菜单栏控件提供的默认“编辑”菜单。我从菜单中删除了编辑部分,一切都恢复正常了。非常感谢这个。我也遇到过同样的情况,MDI的父母有捷径。@granadaCoder:是的,事情结束后会很烦人。。。那里影响事情的发展。。。在这里,我很高兴看到这个评论,因为我有敏锐的眼光//文本框控件不支持快捷键//说什么??很高兴发现朋克保守。这就是问题所在,它恰好出现在我的MDI表格上(正如其他人在本文的其他地方提到的)。你是对的,文档中这么说:
//Check if you've ascribed Ctr + V on any events.
//In this case, I've ascribed it to the following event.
//Find that class and paste the code below.
private void pasteHereToolStripMenuItem_Click(object sender, EventArgs e)
    {
        // Determine if there is any text in the Clipboard to paste into the                                //               //textbox        
        if (Clipboard.GetDataObject().GetDataPresent(DataFormats.Text) == true)
        {
            textBox1.Paste();    
        }