Odwołanie PresentationCore
i wywołanie System.Windows.Clipboard.SetText(string)
zamiast System.Windows.Forms.Clipboard.SetText(string)
. Użyłem clipview do sprawdzenia, czy System.Windows.Clipboard.SetText("");
(który nie zgłasza żadnego wyjątku) przechowuje pusty ciąg do schowka.
Ta metoda pozwala uniknąć warunkowego wywołania Clear()
lub SetText()
w zależności od tego, jaki łańcuch próbujesz skutecznie ustawić w schowku. Jest to szczególnie przydatne, jeśli próbujesz napisać kod, aby ustawić schowek na dowolnej wartości ciągu, nie wiedząc z wyprzedzeniem, czy pusty łańcuch musi być obsługiwany. Oznacza to, że ta metoda pozwala uniknąć traktowania pustego ciągu, tak jak w przypadku specjalnym (IMO, nie powinien to być przypadek szczególny, ponieważ jest to po prostu mylące).
Dodatkowo, jak widać w przypadku podglądu klipu, Clear()
faktycznie opróżnia schowek, zamiast umieszczać w nim pusty ciąg znaków. Wywołanie System.Windows.Clipboard.SetText("")
faktycznie powoduje umieszczenie pustej wartości ciągu w schowku. Po wklejeniu aplikacja docelowa może odróżnić i faktycznie zachowywać się inaczej, jeśli chce.
Dlaczego musisz wkleić pusty ciąg? Czy potrzebujesz wkleić nową linię? – JleruOHeP
Prawdopodobnie taki sam problem jak ja: chciał zachować to ładnie i prosto bez specjalnego przypadku, gdy wybór jest pusty. Zastanawiam się, czy istnieje jakiś techniczny powód, aby uniemożliwić pusty ciąg znaków, gdy dozwolony jest "normalny" ciąg znaków. –