Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/293.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# 单击鼠标中键复制并删除复制时的选择_C#_Winforms_Clipboard - Fatal编程技术网

C# 单击鼠标中键复制并删除复制时的选择

C# 单击鼠标中键复制并删除复制时的选择,c#,winforms,clipboard,C#,Winforms,Clipboard,我希望您能够在我的程序中选择要复制的文本,并且除了CTRL-C之外,还可以自动复制它。例如。如果我选择此选项,则会自动将其复制到鼠标中键。这是到目前为止我的代码。我一直在看中间点击事件,但我不知道如何称呼它。 我想把它作为一个if语句 这是我的代码: private void GetAnswer(string clipboardText) { //Loop through all questions and answers foreach (question q in questionL

我希望您能够在我的程序中选择要复制的文本,并且除了CTRL-C之外,还可以自动复制它。例如。如果我选择此选项,则会自动将其复制到鼠标中键。这是到目前为止我的代码。我一直在看中间点击事件,但我不知道如何称呼它。 我想把它作为一个if语句

这是我的代码:

private void GetAnswer(string clipboardText)
{
  //Loop through all questions and answers
  foreach (question q in questionList)
  {
    //If we have found an answer that is exactly the same show an Notification
    //Startwith zoekt naar alle vragen die matchen vanaf het begin van de zin
    //en Endwith alle vragen die matchen vanaf het eind van de zin
    if (q._question.StartsWith(clipboardText) || q._question.EndsWith(clipboardText))
    {
      ShowNotification(q._question, q._answer);
      break;
    }   
  }
}

private void ShowNotification(string question, string answer)
{
  notifyIcon1.Icon = SystemIcons.Exclamation;
  notifyIcon1.BalloonTipTitle = question;
  notifyIcon1.BalloonTipText = answer;
  notifyIcon1.BalloonTipIcon = ToolTipIcon.Error;
  notifyIcon1.ShowBalloonTip(1000);
}

protected override void WndProc(ref Message m)
{
  base.WndProc(ref m);
  {
    const int WM_DRAWCLIPBOARD = 0x308;
    if (m.Msg == WM_DRAWCLIPBOARD)
    {
      GetAnswer(Clipboard.GetText(TextDataFormat.UnicodeText));
    }
  }
}

我认为解决方法是处理表单的按键事件。 示例代码可能如下所示:

     private void form1_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar==';')
            {
                //call whatever u want here
            }
        }

    private void form1_MouseClick(object sender, MouseEventArgs e)
    {
         if (e.Button == MouseButtons.Left)
         {
             //do whatever u want
         }
    }

要将此文本粘贴到哪里?我认为你应该使用一些组件。。。。和处理事件。你也应该提供更多关于你的问题的信息。至少现在还不清楚me@BartoszOlchowik我更新了我的codeOnly剪贴板查看器windows接收消息:WM_DRAWCLIPBOARD。您是否已将表单注册为剪贴板查看器?这里的描述:@BartoszOlchowik已经这么做了怎么做的?请更新代码。但是如果你用鼠标左键单击,我需要它。我得到了这个错误。当前上下文中不存在名称e。请更新你的有问题的代码。。。你是否从设计器中添加了事件,或者只是将其粘贴到代码中?如果你使用剪贴板选择了一些内容,我只想获得输出。GetTextRead关于c事件以及如何定义它们。首先,我建议您使用Designer,然后右键单击表单上的属性窗口。然后,您应该转到一个事件页面照明螺栓图标。然后你必须找到MouseClick事件,双击它而不是名字,双击空白点,它位于它的名字的右边。然后,设计器将正确地在代码中添加事件,并且不会出现此错误。您拥有它,因为您没有声明参数“e”。