Jak skopiować tekst w RichTextBox wraz z jego formatowaniem do programu WordPad lub przeglądarki internetowej?Kopiowanie tekstu wraz z jego formatowaniem z RichTextBox
Odpowiedz
Podobnie jak w przypadku kopiowania zwykłego tekstu, należy użyć wartości Clipboard.SetText
method. Spowoduje to wyczyszczenie bieżącej zawartości schowka Windows i dodanie do niej określonego tekstu.
Aby skopiować sformatowany tekst, należy użyć parametru overload of that method, który akceptuje parametr TextDataFormat
. To pozwala określić format tekstu, który chcesz skopiować do schowka. W takim przypadku należy podać TextDataFormat.Rtf
lub tekst składający się z danych w formacie RTF.
Oczywiście, aby to działało, trzeba również użyć kontrolki Rtf
property kontrolki RichTextBox
, aby wyodrębnić tekst za pomocą formatowania RTF. Nie można użyć standardowego Text
property, ponieważ nie zawiera informacji o formatowaniu RTF. Jako dokumentacja ostrzega:
Text
nieruchomość nie zwraca żadnych informacji na temat formatowania zastosowanego do treściRichTextBox
. Aby uzyskać kody sformatowanego tekstu formatowanego (RTF), należy użyć właściwościRtf
.
Przykładowy kod:
' Get the text from your rich text box
Dim textContents As String = myRichTextBox.Rtf
' Copy the text to the clipboard
Clipboard.SetText(textContents, TextDataFormat.Rtf)
A gdy tekst jest w schowku można (lub użytkownik aplikacji) wklej go gdziekolwiek chcesz. Aby wkleić tekst programowo, użyjesz parametru Clipboard.GetText
method, który akceptuje również parametr TextDataFormat
. Na przykład:
' Verify that the clipboard contains text
If (Clipboard.ContainsText(TextDataFormat.Rtf)) Then
' Paste the text contained on the clipboard into a DIFFERENT RichTextBox
myOtherRichTextBox.Rtf = Clipboard.GetText(TextDataFormat.Rtf)
End If
miałem podobną sytuację, gdzie byłem kopiowania z mojej aplikacji VB NET i próbowała \ r \ n \ r \ n, vbCrLf, Chr (13), Chr (10) , Chr (13) & Chr (10) itd. Nowe linie pojawią się, jeśli wkleję do Worda lub WordPada, ale nie do Notatnika. W końcu użyłem ControlChars.NewLine, gdzie używałem vbCrLf i działało. Podsumowując: Clipboard.SetText ("To jest jedna linia" & ControlChars.Newline & "i ten zły chłopiec jest drugi.") To działa poprawnie. Mam nadzieję, że to działa dla Ciebie!
Jest to lepsze rozwiązanie (w oparciu o this answer):
var dto = new DataObject();
dto.SetText(richTextBox.SelectedRtf, TextDataFormat.Rtf);
//Since notepad sux and doesn't understand \n,
//we need to fix it replacing by Environment.NewLine (\r\n)
string unformattedText = richTextBox.SelectedText.Replace("\n", Environment.NewLine);
dto.SetText(unformattedText, TextDataFormat.UnicodeText);
Clipboard.Clear();
Clipboard.SetDataObject(dto);
użyłem tego proste obsługi zdarzeń (które używają metod wbudowanych w kopiuj/wklej z RichTextBox), aby uniknąć sprawdzania TextDataFormat:
private void mnuCopy_Click(object sender, EventArgs e)
{
txtRichtext.Copy();
}
private void mnuPaste_Click(object sender, EventArgs e)
{
txtRichtext.Paste();
}
- 1. Emacs: kopiowanie tekstu (bez jego zabicia)
- 2. Kopiowanie emotikonów "tekst" z richtextbox pokazując obraz w wpf
- 3. kopiowanie całego folderu wraz z jego zawartością z zasobów do wewnętrznych plików aplikacji/
- 4. Utwórz tabelę z rzędami innej tabeli wraz z jego właściwościami
- 5. Kopiowanie nagłówków kolumn wraz z wynikami zapytania w Visual Studio
- 6. Jak przesłonić kopiowanie i wklejać w richtextbox
- 7. Zmiana czcionki tekstu w RichTextBox
- 8. Kolorowanie tekstu w RichtextBox, C#
- 9. Jak wysłać plik wraz z jego nazwą przez QTCPSocket?
- 10. Tworzenie tekstu wraz z krzywą za pomocą QPainterPath
- 11. RichTextBox znajdowanie i kolorowanie tekstu wizualnego basic
- 12. C#/WPF: Wyłącz zawijanie tekstu w RichTextBox
- 13. Zmiana koloru tekstu w WinForms RichTextBox
- 14. C# Jak ustawić kolor tekstu w richtextbox?
- 15. JsonSerializer - szeregowanie miejsc dziesiętnych z formatowaniem "N2"
- 16. Jak uzyskać RTF z RichTextBox
- 17. Niespójne wyniki z RichTextBox ScrollToCaret
- 18. gradle - kopiowanie pliku po jego wygenerowaniu
- 19. Tworzenie tabel z formatowaniem warunkowym z RMarkdown + knitr
- 20. Kopiowanie tekstu do schowka za pomocą Java
- 21. JSDoc @param wraz z @deprecated
- 22. Automapper wraz z Dependency Injection
- 23. Implementacja logowania wraz z suPHP
- 24. Używanie Xalana wraz z Saxonem
- 25. Niestandardowe IPrincipal wraz z WindowsAuthentication
- 26. WPF: Kopiowanie z DataGrid
- 27. Wybierz zakres tekstu w RichTextBox WPF (FlowDocument) Programowo
- 28. Swift Jak obliczyć wysokość tekstu liniowego z jego czcionki
- 29. Kopiowanie tekstu spacji przy użyciu Clipboard.js
- 30. Resetuj RTF w RichTextBox?
Czy kopiuje również obrazy w RichTextBox i jak mogę go przekonwertować na html? –
@abcd: Nie wiem, czy skopiuje obrazy, czy nie. Podejrzewam, że tak nie będzie, ale musisz spróbować i zobaczyć. Jesteś skonfigurowany w środowisku znacznie bardziej sprzyjającym przetestowaniu tego w tym momencie niż ja. Jeśli chcesz używać formatu HTML, zmień 'TextDataFormat.Rtf' na' TextDataFormat.Html'. –
@cody Dzięki Spróbuję tego i zgłoś się ponownie –