【问题标题】:How do I Paste one line from the clipboard at a time in C#?如何在 C# 中一次从剪贴板粘贴一行?
【发布时间】:2013-05-17 17:24:47
【问题描述】:

如何在 C# 中一次从剪贴板粘贴一行?

我在这一行得到一个 argumentNullException:

Clipboard.SetText(nextLine(clipboardText));

如果 nextLine() 无法从剪贴板获取文本,我会返回一个空字符串,因此它永远不应该返回 null。

当我按 CTRL + C 时,它将获取所有剪贴板文本并将其存储在剪贴板文本中。

当我按 CTRL + V 时,它应该将剪贴板文本的第一行粘贴到系统剪贴板中,然后粘贴。

            if (Keys.C == (Keys)vkCode && Keys.Control == Control.ModifierKeys)
            {
                Console.WriteLine("CTRL+C");
                clipboardText = getTheClipboardText();
            }
            else if (Keys.V == (Keys)vkCode && Keys.Control == Control.ModifierKeys)
            {
                    Clipboard.SetText(nextLine(clipboardText)); //nextline returns a string of one line

                    clipboardText = removeFirstLine(clipboardText); //remove first line returns a string missing the first line

            }
     }

【问题讨论】:

  • 不清楚你在哪里得到异常,但你不应该试图捕捉它 - 你应该通过首先检查空值并适当地处理它来避免它。请注意,您的方法名称不是 C# 的常规名称,顺便说一句。
  • 不要将其添加为评论 - 将其编辑到您的问题中。

标签: c# key hook paste intercept


【解决方案1】:

听起来nextLine 在某些情况下会返回null,因此您需要考虑如何处理它。例如:

string line = nextLine(clipboardText);
if (line == null)
{
    // Nothing more to do.
    return ...; // TODO: Work out what value to return
}
Clipboard.SetText(line);
clipboardText = removeFirstLine(clipboardText);

或者,如果您的 nextLine 方法永远不应返回 null,则表明它存在错误。

【讨论】:

  • 你的意思是当nextLine(clipboardText)null时计算机退出函数?
  • @zixuan:如果nextLine返回null,那么估计Clipboard.SetText正在抛出ArgumentNullException。这将像通常的异常一样传播。
猜你喜欢
  • 2017-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-30
  • 2015-07-29
  • 2013-07-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多