Halloweenská akce! Na stránce s dobitím bodů zadej dole kód STRASIDELNYCH20 a získej porci +20% bodů zdarma!
Akce končí 31.10. o půlnoci.

Diskuze: RichTextBox WF vs. WPF

C# .NET .NET (C# a Visual Basic) RichTextBox WF vs. WPF American English version English version

Aktivity (3)
Avatar
Andy Scheuchzer:8. července 14:01

Chtěl jsem si udělat základní XML reader (zatím bez ukládání – prostě jenom naformátuje a zvýrazní). Zkoušel jsem to ve WPF a když jsem se konečně dostal k tomu vybarvení, zjistil jsem, že TextBox nestačí. Našel jsem ale jen rady na WF – doporučovaly RichTextBox. Ve WPF ale dělal něco úplně jiného (tady je první otázka – jak souvisí RichTextBox ve WF a WPF), tak jsem to konečně přesunul do WF, kde jenom nescrolluje (druhá otázka – jak docílit scrollování (ale zas ne samovolného)).
Ještě poslední otázečka – je teda lepší používat WF, které jsou podporovanější, nebo WPF, což podporuje jistý David (a myslím, že on ví, který :-) )

WPF
WF Doufám, že nevadí forma designeru
Sorry za kvalitu kódu, pořád je ve vývoji :-)

Zkusil jsem: Hledat…

Chci docílit: Funkčního XML readeru

Odpovědět 8. července 14:01
Za správnost neručím.
Avatar
Odpovídá na Andy Scheuchzer
Michal Štěpánek:9. července 9:44

Kde jsi přišel na ten nesmysl, že jsou WinForms podporovanější????? Je tomu právě naopak. WF pomalu, ale jistě umírá. WPF je oproti WF novější, je technologicky mnohem dále...

Nahoru Odpovědět  +2 9. července 9:44
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Odpovídá na Michal Štěpánek
Andy Scheuchzer:9. července 10:06

Podívej se do ToolBoxu, na fóra, prostě to není tak strmá cesta, no. Ještě jsem v ten moment měl jakýsi další argument, ale já rád zapomínám :-).

Nahoru Odpovědět 9. července 10:06
Za správnost neručím.
Avatar
Odpovídá na Andy Scheuchzer
Michal Štěpánek:9. července 10:15

Co uvidím v ToolBoxu? Tam jsou viditelné nástroje podle toho, kterou verzi .NET zvolíš. Všechno, co umí WF, umí WPF taky a ještě mnohé další. Jen u některých nástrojů je třeba trošku "pogůglit", protože ve WPF mohou fungovat trošku jinak než ve WF, nebo je mohly nahradit komponenty novější.
To, že se o WF diskutuje na fórech neznamená, že je podporovanější, ale to, že je v tom napsáno hodně aplikací, které je třeba nějakým způsobem udržovat. Nově vytvářené projekty (obzvláště ty větší) jsou již většinou ve WPF, protože vývojáři potřebují "vychytávky" a funkčnosti, kterými WF vzhledem ke své zastaralosti disponovat nemůže, nebo které jsou ve WF použitelné jen velmi složitým způsobem.

Editováno 9. července 10:16
Nahoru Odpovědět 9. července 10:15
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Odpovídá na Michal Štěpánek
Andy Scheuchzer:9. července 10:44

Jen u některých nástrojů je třeba trošku "pogůglit", protože ve WPF mohou fungovat trošku jinak než ve WF, nebo je mohly nahradit komponenty novější.

Např. RichTextBox? :-) A nemáš, prosím tě, nějaké řešení? Celkem by bodlo.

Jo ještě pár dalších problémů:

  1. ve WF (protože WPF pořád nefunguje) se mi některé značky vykreslí i s ">", které mají mít jinou barvu. Pravděpodobně je to nějaká chyba v indexování i a j, ale zatím se mi to nepovedlo opravit.
  2. ve WPF se mi všechno (co se teda zobrazí) zobrazí po znaku na řádek (MapTbx pracuje normálně)
  3. v čem všem spočívá rychlost např. VScode? Pochybuju, že by to byly jenom vlákna.
Nahoru Odpovědět 9. července 10:44
Za správnost neručím.
Avatar
Odpovídá na Andy Scheuchzer
Erik Šťastný:9. července 10:54

Jakou má souvislost VScode s tím o čem se tu bavíte?

 
Nahoru Odpovědět 9. července 10:54
Avatar
Odpovídá na Erik Šťastný
Andy Scheuchzer:9. července 10:59

Dá se v něm otevřít a číst XML (ale neformátuje se) a prostě je rychlejší než ten můj reader nebo třeba poznámkový blok. Teoreticky bych mohl jako příklad uvést skoro cokoliv. A ano, asi to bude i C++, ale že by jen to…

Nahoru Odpovědět 9. července 10:59
Za správnost neručím.
Avatar
Odpovídá na Andy Scheuchzer
Erik Šťastný:9. července 11:02

VSCode je zrovna napsán v JS,HTML,CSS kódu běžící na jádru Chromia pokud vím. Takže v C++ to asi nebude :)

Jinak ve vykreslování grafiky jsou například zrovna WPF brutálně vepředu oproti WF.

Editováno 9. července 11:03
 
Nahoru Odpovědět 9. července 11:02
Avatar
Odpovídá na Erik Šťastný
Andy Scheuchzer:9. července 11:06

Tak aspoň vím, v čem to je. A opravdu to není ničím jiným, než jazykem? Jako nějaké ty vymoženosti za ty roky vývoje chápu, ale museli mít i něco do začátku.

Nahoru Odpovědět 9. července 11:06
Za správnost neručím.
Avatar
Odpovídá na Andy Scheuchzer
Erik Šťastný:9. července 11:12

Myslíš teď konkrétně to WF a WPF? No pokud vím, tak ve WF je postavené tak, že vše kreslí CPU, kdežto WPF umí kreslit pomocí GPU.

Editováno 9. července 11:13
 
Nahoru Odpovědět 9. července 11:12
Avatar
Odpovídá na Erik Šťastný
Andy Scheuchzer:9. července 11:15

Myslím všechny větší programy. O CPU a GPU jsem už kdesi četl. Asi někde v komentářích článku, co WF a WPF srovnával…

Nahoru Odpovědět 9. července 11:15
Za správnost neručím.
Avatar
Odpovídá na Andy Scheuchzer
Erik Šťastný:9. července 11:20

No tak hlavní věc ve výkonu GUI je asi delegování grafické práce na grafickou kartu, což je to co WF neumí.

 
Nahoru Odpovědět  +1 9. července 11:20
Avatar
Andy Scheuchzer:20. srpna 17:53

Stále žádný nápad?

Pro nečtenáře zopakuju nezodpovězené otázky:

  1. Jak souvisí RichTextBox ve WF a WPF?
  2. Jak ve WF RichTextBoxu docílit možnosti scrollování (a tudíž zobrazení "skrytého" textu)?
  3. Ve WF se mi některé značky vykreslí i s ">", které mají mít jinou barvu. Pravděpodobně je to nějaká chyba v indexování i a j, ale zatím se mi to nepovedlo opravit. Co s tím?
  4. Jak docílit normálního zobrazení textu ve WPF RichTextBoxu (ne co znak, to řádek)?

Jinak Michal Štěpánek a Erik Šťastný díky za zodpovězení těch "trochu off-topic" otázek :-).

Btw. 3. a 4. otázka je ve skutečnosti 4. a 5.

Editováno 20. srpna 17:54
Nahoru Odpovědět 20. srpna 17:53
Za správnost neručím.
Avatar
krepsy3
Redaktor
Avatar
Odpovídá na Andy Scheuchzer
krepsy3:20. srpna 18:26
  1. Nijak, souvisí jen jejich funkce - možnost zobrazovat a editovat bohatě formátovaný text. Ve WF je takový text ve formátu RTF (Richly formatted text) či jako s objektem OLE (což už je dnes zastaralá technologie). Ve WPF je naopak ve formátu XAML.
  2. Mělo by to fungovat samo od sebe, protože výchozí hodnota vlastnosti ScrollBars je Both. Popř. tedy musíš změnit tuto vlastnost.
  3. nevím, nikdy jsem s WF RTBoxem pořádně nedělal. Zkus googlit.
  4. Protože neformátuješ text korektním způsobem. RTB ti pravděpodobně vkládá text do samostatného bloku. Pokud nevíš, jak přesně funguje formátování bohatě formátovaného textu v XAMLu, doporučuju ti pročíst si následující kapitolu wpf-tutorialu: https://www.wpf-tutorial.com/…ntroduction/
Nahoru Odpovědět 20. srpna 18:26
Programátor je stroj k převodu kávy na kód.
Avatar
vosa53
Člen
Avatar
Odpovídá na Andy Scheuchzer
vosa53:20. srpna 18:27

Jestli chceš udělat XML editor/jen highlighter, tak použij něco co zvýrazňuje na základě syntaxe, třeba AvalonEdit (pro WPF) je dobrý. Můžeš si tam i rovnou v xml souboru nastavit pravidla pro zvýrazňování a zvládne to klidně milion řádků a víc. RichTextBox se na tohle nehodí.

 
Nahoru Odpovědět 20. srpna 18:27
Avatar
Odpovídá na krepsy3
Andy Scheuchzer:20. srpna 19:37
  1. Asi si budu muset zvyknout, že MS dělá všechno jinak ve WF (i když ho používám jen minimálně) a WPF :-)
  2. To tam mám nastavené. Scrollbar se sice objeví, ale není schopný jakkoliv reagovat.

4. Zkusil jsem opsat kus kódu s danou funkcí odtud, problém ale zůstal.
Opsaná část:

FileStream fs = new FileStream(dlg.FileName, FileMode.Open);
TextRange range = new TextRange(CodeTbx.Document.ContentStart, CodeTbx.Document.ContentEnd);
range.Load(fs, DataFormats.Rtf);

//EDIT: DataFormats jsem zkoušel různé, některé mi soubor odmítaly otevřít

Editováno 20. srpna 19:39
Nahoru Odpovědět 20. srpna 19:37
Za správnost neručím.
Avatar
krepsy3
Redaktor
Avatar
Odpovídá na Andy Scheuchzer
krepsy3:21. srpna 0:42

To totiž dost záleží, jaký ten soubor je. A jak jsem psal, RTB ve WPF využívá k formátování značkování XAMLem, nikoliv RTF formát. Ani se nedivím, že ti to korektně nefunguje :D

Nahoru Odpovědět 21. srpna 0:42
Programátor je stroj k převodu kávy na kód.
Avatar
Andy Scheuchzer:21. srpna 20:51

Problém číslo 4 vyřešen – RTB nesmí být ve ScrollVieweru. Taková blbost, a mně to trvá měsíc :-)
S XAMLem jsem to taky nějak vyřešil, zkusil jsem si něco uložit z RTB a potom jsem kus zkopíroval. Ještě tak zjistit, jak zabarvit kus textu, a XMLreader bude zhruba hotov.

Myslím, že toto vlákno dočasně "uspím", je ale celkem pravděpodobné, že s tímto ještě nějaký problém budu mít. Kdyby někdo opravdu moc trval na označení svého (nebo číhokoliv) příspěvku jako řešení vlákna už teď (s pořádným odůvodněním), můžete mi to napsat do PM.

Nahoru Odpovědět 21. srpna 20:51
Za správnost neručím.
Avatar
Odpovídá na vosa53
Andy Scheuchzer:24. srpna 14:49

Tak AvalonEdit jsem vyzkoušel, je to skvělé (ale při 657647řádkovém souboru je trochu pomalejší :-) ). Kdyby mi nešlo o to si něco udělat sám, označil bych tvůj příspěvek jako řešení. Díky.

Nahoru Odpovědět  +1 24. srpna 14:49
Za správnost neručím.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 19 zpráv z 19.