Winforms -> Generator kodu html

0

Witam serdcznie,

robie program do wysylania maili dla klienta i chcialem umozliwic mu htmlowe opcje (kolory i rodzaje fontów).
Czy jest jakis sprytny sposob, zeby wykorzystac visualowe kontrolki aby uzytkownik wprowadzal tresc maila z reki jak w skrzynce pocztowej a docelowo generowac z tego htmla (czyli automatycznie style entery etc) czy trzeba to samemu oprogramowac ?

Poki co ogarnalem wylacznie, ze mozna wziac tresc RichTextBoxa i wciagnac do tresci maila, tym sposobem sa generowane przejscia do nowej linii ale brak fontow..

0

Najprostszy sposób:

public string ConvertToHtml(string str)
{
     return str.Replace("\n", "<br>")
          .ReplaceBold(str);
}
private string ReplaceBold(string str)
{
     
}

Trudniejszy sposób to np. korzystanie z RichTextBox:
Można odczytywać style i formatowanie z każdego znaku i opakowywać go na tej podstawie w "znaczniki"

2

Po co generować samemu HTMLa ze znaczników z całkiem innej składni skoro można od razu osadzić okno przeglądarki, zmienić "contentEditable" na true i odczytać HTMLa bezpośrednio z tego co wpisał user. Przy okazji będzie możliwe kopiowanie z przeglądarki i to wszystko bez dodatkowego kodu
Przykładowa przeglądarka do osadzenia:
https://cefsharp.github.io/

inne:
https://stackoverflow.com/a/14667763

0

@obscurity: Czytalem o tym rozwiazaniu ale nie znalazlem wczesniej darmowej przegladarki procz tej wbudowanej w visuala.
2 pytania mi sie pojawily :
a) gdzie siedzi ta wlasciwosc ContentEditable, bo nie widze jej tak samo jak w w domyslnym Webbrowserze visuala.
b) jak wyswietlic nominalnie puste okno w ktorym uzytkownik bedzie wpisywal tresc ?

1

@Jurek-gdy:
a) to własność elementu "body", zależnie od przeglądarki dostać się musisz w inny sposób, ale ogólnie gdzieś musisz wykonać kod: window.document.body.contentEditable = true (możesz nawet przetestować to w konsoli przeglądarki na tej stronie)
b) po prostu nawiguj do "about:blank" albo gotowego template'u pustej strony z pliku .html (ten template może od razu zawierać skrypt zmieniający contentEditable jeśli chcesz)
Potem tylko w aplikacji odczytujesz window.document.body.innerHTML i masz gotowy kod HTMLa do wysłania. Musisz jeszcze trochę pozmieniać jeśli na przykład chcesz obsługiwać wysyłanie obrazków

0

@obscurity:

a czy to okno przeglądarki to nie jest np. IE? czy już tam leci Microsoft Chrome?

1

Jeżeli użyjesz cefsharp to to jest Chrome. Jeżeli użyjesz WebView2 to to jest Edge (Chromium). Jeżeli użyjesz WebBrowser to to jest IE.

1

IE jest ok jeśli planujesz tylko pisać maile z jego pomocą, jeśli zamierzasz je wyświetlać to narażasz się na wszystkie bugi w nim zawarte, być może nawet się uda komuś w ten sposób przemycić jakiegoś wirusa (IE jest jeszcze łatane?)
do samego pisania wydaje mi się że nawet IE będzie ok, ale za kilka lat jest ryzyko że nie będzie już silnika IE w windowsie i przestanie to działać. Minusem chroma czy chromium jest to że z tego co pamiętam to dodatkowe około 80MB do aplikacji. Jeśli zależy Ci na rozmiarze to bierz albo IE albo Edge jeśli celujesz w win10 i WebView2 potrafi wykorzystać przeglądarkę z windowsa

0

Dziękuje za pomoc.
Szczerze mowiac nie udalo mi sie tego samemu zrozumiec i zaprogramowac ale wykorzystalem kod stad i dziala dosc przyjemnie :
https://www.codeproject.com/Articles/15559/A-Windows-Forms-based-text-editor-with-HTML-output

1 użytkowników online, w tym zalogowanych: 0, gości: 1