2013-05-17 2 views
0

Как вставить одну строку из буфера обмена одновременно в C#?Как вставить одну строку из буфера обмена одновременно в C#?

Я получаю ArgumentNullException на этой линии:

Clipboard.SetText (nextLine (clipboardText));

У меня была следующая строка(), возвращающая пустую строку, если она не может получить текст из буфера обмена, чтобы он никогда не возвращал значение null.

Когда я нажму CTRL + C, он получит весь текст буфера обмена и сохранит его в clipboardText.

Когда я нажимаю CTRL + V, он должен вставить верхнюю строку из clipboardText в системный буфер обмена, а затем вставить его.

  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 

      } 
    } 
+2

Непонятно, где вы получаете исключение, но вы не должны пытаться его поймать - вам следует избегать этого, сначала проверяя на недействительность, и обрабатывая его соответствующим образом. Обратите внимание, что ваши имена методов не являются обычными для C#, кстати. –

+0

Не добавляйте его в качестве комментария - отредактируйте его в свой вопрос. –

ответ

2

Это звучит как 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 никогда не должен возвращать нуль, то это указывает на то, что у него есть ошибка.

Смежные вопросы