Změna výchozích vlastností objektů formuláře   zodpovězená otázka

WinForms

Zdravím,

dá se nějak nastavit pro celou aplikaci, aby některé objekty měli jiné výchozí vlastnosti? Např. kdybych chtěl, aby všechny Textboxy měly ve výchozím stavu modré pozadí místo bílého?

Díky, Patrik

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Obávám se že to nelze změnit, je to definováno v System.Windows.Forms.Control a dále děděno. PropertyGrid v okně Properties pouze zobrazuje to, co se mu předhodí.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Tak si vytvoř vlastní komponenty a ty potom přidávej do formuláře.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Chápu to tedy tak, že si vytvořím vlastní třídu, která zdědí TextBox? Jak tam potom ale přenastavím tu defaultní barvu pozadí nebo třeba výchozí text?

Vím, že je tu článek na vytváření "user control", ale problém je v tom, že mám už projekt asi se stovkou textboxů a celé to přepisovat by byla pěkná pruda. :)

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Hmm, tak už jsem zřejmě pokročil. Nevím, jak elegantní je toto řešení, ale prostě jen stačilo do té zděděné třídy přidat toto:

Public Sub New()
    Me.Text = "blablabla"
    Me.BackColor = Color.Aqua
End Sub

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Dopsání změny nastavení do konstruktoru je nejjednodušší a relativně čisté řešení. To že používáte textbox na 100 místech bohužel znamená, že ho budete muset všude přepsat. Ale to jde udělat hromadným nahrazením ve všech požadovaných *.designer.vb souborech, takže to nebude tak hrozné. Jen si před touto akcí projekt zazálohujte, pokud ho nemáte v systému na správu verzí.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Vámi navrhované řešení by bylo ve výsledku zbytečně komplikované a neefektivní.

Je-li v uživatelském rozhraní 100+ TextBoxů, pak zde něco zcela určitě smrdí a je nejvyšší čas nalézt nějaké normální řešení, například DataGridView nebo ListView.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Není to vše v jednom formuláři. Celý program se skládá z několika formulářů. Slouží pro komunikaci s databází, takže DataGridView používám taky, TextBoxy pro zadávání dat do různých tabulek. Můj původní dotaz právě vycházel z toho, že v projektu chci, aby všechny datagridview měli barvně odlišené sudé/liché řádky. A dělat to postupně po jednom v designeru je zcela určitě špatné řešení. A bohužel jsem nedokázal zjistit ani si to nějak představit, jak se ve větších projektech řeší jednotný "styl" aplikace.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

DataGridView podporuje styly (System.Windows.Forms.DataGridViewCellStyle). Stačí abyste si je globálně nadefinoval jako Shared (static) a potom je přiřadil tam kam je potřeba. Stylem se dá specifikovat i odlišení sudých/lichých řádků (System.Windows.Forms.DataGridView.AlternatingRowsDefaultCellStyle).

Jinak na styly ovládacích prvků (podobně jako CSS) se dobře hodí těžkopádné a zbytečně komplikované WPF.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Děkuji za pomoc.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback