Určitě nejsem jediný, koho nebaví klikat, nastavovat a upravovat uživatelské rozhraní v desktopových aplikacích. Když se vytvoří rozsáhlejší formulář s mnoha komponenty, tak se skoro vždy ukáže, že přehlednost klesla na neúnosnou míru. To vede k tomu, že uživatel není schopný se ve formuláři orientovat, a proto při zadávání dat spíš udělá chybu. Já jsem si oblíbil jednoduchý trik na zpřehlednění formuláře, který jsem poprvé viděl v jednom českém účetním programu. Spočívá v tom, že když je formulářový prvek aktivní, tak změní svoji barvu pozadí.

Po implementaci vypadá aplikace živější, uživatel pořád ví, kde se právě nachází a kam se dostal po stisknutí tabulátoru. Další výhoda je v tom, že můžeme klidně vytvořit celý formulář, a dodatečně vložit kód pro zvýraznění aktivní komponenty.

Implementace

Po provedení metody InitializeComponent v konstruktoru formuláře, projdeme komponenty v kolekci Controls formuláře, kterým přidáme události Enter a Leave, které nám budou obarvovat aktuální komponentu.   

public Form1()
{
      InitializeComponent();
      foreach (Control control in Controls)
      {
            if (control is TextBox)
            {
                  control.Enter += new EventHandler(HighLight_Enter);
                  control.Leave += new EventHandler(HighLight_Leave);
            }
            //další typy komponent
      }
//...
}

//...
void HighLight_Enter(object sender, EventArgs e)
{
      ((Control)sender).BackColor = Color.LightYellow;
}
void HighLight_Leave(object sender, EventArgs e)
{
      ((Control)sender).BackColor = Color.White;
}

Snad jedinou vadou na kráse je, že všechny komponenty neimplementuji BackColor, tak jak by jsme si představovali. Například po změne BackColor u CheckBox se nezmění pozadí zaškrtávacího políčka ale celé komponenty.

Jak řešíte Vy přehlednost formulářů?