Скопируйте пустую строку с помощью Clipboard.SetText(string)

Clipboard.SetText("") выдает мне ошибку - "Значение не может быть нулевым". Итак, как мне скопировать пустую строку с помощью Clipboard.SetText?

Я уже сделал Clipboard.Clear(). Он очищает буфер обмена, но это не помогает мне вставить пустую строку

Любые предложения?

Ответ 1

Если вы попытаетесь сохранить нулевую или пустую строку с помощью Clipboard.SetText, она никогда не будет работать.

См. Метод Clipboard.SetText(String) (MSDN). Он упоминает, что ArgumentNullException вызывается, если текст имеет значение null или Empty для Clipboard.SetText.

Следовательно, вы не можете достичь того, чего вы пытаетесь достичь.

Ответ 2

Думаю, вам нужно сделать

Clipboard.Clear()

От MSDN

Удаляет любые данные из системного буфера обмена.

Ответ 4

Ссылка PresentationCore и вызовите System.Windows.Clipboard.SetText(string) вместо System.Windows.Forms.Clipboard.SetText(string). Я использовал clipview, чтобы убедиться, что System.Windows.Clipboard.SetText(""); (который не генерирует исключение) сохраняет пустую строку в буфер обмена.

Этот метод избавляет вас от необходимости условно вызывать Clear() или SetText() в зависимости от того, какую строку вы пытаетесь эффективно установить в буфер обмена. Это особенно полезно, если вы пытаетесь написать код для установки буфера обмена любого строкового значения, не зная заранее, должна ли поддерживаться пустая строка. I.e., этот метод позволяет избежать обработки пустой строки, как частный случай (IMO, он не должен быть особым случаем, потому что это просто запутывает).

Кроме того, как показано в clipview, Clear() фактически освобождает буфер обмена вместо того, чтобы помещать в него пустую строку. Вызов System.Windows.Clipboard.SetText("") фактически помещает пустое строковое значение в буфер обмена. Когда вы вставляете, целевое приложение может определить разницу и вести себя по-другому, если захочет.