/ / Ako môžem zistiť, keď už nie je ovládací prvok viditeľný? - c #, .net, winforms, tabcontrol, splitcontainer

Ako môžem zistiť, keď kontrola už nie je viditeľná? - c #, .net, winforms, tabcontrol, splitcontainer

V súčasnej aplikácii mám na stránke stránku Ovládanie stromuTabControl, ktorý je vo vnútri panelu ovládacieho prvku SplitContainer. Ovládanie stromu sa tak môže skryť skrytím panelu SplitContainer alebo prepnutím na inú kartu TabPontrol.

V ponukách formulára sa nachádzajú príkazy, ktoré pôsobia na aktuálne vybraný uzol v strome. Nechcem, aby boli tieto možnosti povolené, keď používateľ nevidí, čo je vybraté.

Existuje jednoduchý spôsob, ako určiť, kedy TreeView zhasne bez toho, aby sa prihlásil na odber udalostí v TabControl aj SplitContainer oddelene?

odpovede:

1 pre odpoveď č. 1

Môžete vytvoriť booleovskú členskú premennú. V tabchangovanej udalosti skontrolujte, či je vybratá karta stromového zobrazenia a nastavte premennú vhodne. Tiež sa prihláste na udalosť, ktorá sa vypáli pri zmene veľkosti zobrazenia rozdeľovača. Otestujte šírku alebo výšku rozdeľovača, aby ste zistili, či je zobrazenie stromu skryté. Ak je, nastavte tu premennú. Všetko, čo musíte urobiť, je otestovať svoju novú členskú premennú.


0 pre odpoveď č. 2

Otestujte vlastnosť Viditeľný strom TreeView a tiež udalosť VisibleChanged.


0 pre odpoveď č. 3
if(!myControl.Visible)
{
// Control is not visible.
}

alebo

if(myControl.Visible == false)
{
// Control is not visible.
}

Alebo pravdepodobne lepšou možnosťou by bolo pridanie obslužného programu do udalosti VisibleChanged v kóde (alebo pomocou karty Udalosti v zobrazení Návrhár):

void myControl_VisibleChanged(object sender, EventArgs e)
{
TreeView tView = sender as TreeView ;
if (tView.Visible)
{
// Do something.
}
else
{
// Do something.
}
}