TabControl TabPage Hide [RISOLTO]

di il
9 risposte

TabControl TabPage Hide [RISOLTO]

Salve a tutti,

c# controllo TabPage… il controllo contiene 3 Pagine.

in Form Load ho la necessità di nascondere una pagina della TabControl e uso il seguente codice: (la pagina da nascondere ha indice = 2… quindi nella raccolta è la terza e ultima pagina del controllo)

            // set tabpage edit
            int index = TabControlServices.TabPages.IndexOf(TabPageUpdateService);
            TabControlServices.TabPages[index].Hide();

Successivamente tramite un Pulsante la devo visualizzare per accedere ai controlli in essa contenuti:

        private void BtnAddService_Click(object sender, EventArgs e)
        {
            // set tabpage edit
            int index = TabControlServices.TabPages.IndexOf(TabPageUpdateService);
            TabControlServices.TabPages[index].Show();
            TabControlServices.SelectTab("TabPageUpdateService");
        }

infine  al salvataggio la devo nuovamente nascondere:

        private void BtnSaveService_Click(object sender, EventArgs e)
        {
            // set tabpage edit
            int index = TabControlServices.TabPages.IndexOf(TabPageUpdateService);
            TabControlServices.TabPages[index].Hide();
            TabControlServices.SelectTab("TabPageService");
        }

La tabPage con il metodo Hide non viene nascosta e non so proprio cosa altro guardare oltre i controlli e verifiche che ho effettuato con il debug.

Come mai non funziona ? cosa mi sfugge? 

Grazie

;-)


Edit:
per adesso ripiego sul remove TabPage dalla Collection TabControl e la ripristino ogni volta che occorre… postato esempio nell'ultimo post.
Un Grazie a tutti !!!

9 Risposte

  • Re: TabControl TabPage Hide [RISOLTO]

    Usa

    TabControlServices.TabPages["TabPageUpdateService"].Text = "";
    
  • Re: TabControl TabPage Hide [RISOLTO]

    Non esiste la proprietà visible per la pagina?

    tabControl.TabPages[1].PageVisible = false;

    In alternativa a false o true imposti una condizione

    Tipo: 

    tabControl.TabPages[1].PageVisible = (dataset in edit o insert mode) 

    O la condizione che rende necessaria la visualizzazione della pagina.

  • Re: TabControl TabPage Hide [RISOLTO]

    20/09/2023 - sihsandrea ha scritto:


    tabControl.TabPages[1].PageVisible = false;

    PageVisible non esiste

    20/09/2023 - sihsandrea ha scritto:


    Non esiste la proprietà visible per la pagina?

    Esiste ma, leggendo la

    documentazione

    MS (cosa che dovrebbe sempre essere fatta, si nota che:

    Commenti

    Questo membro non è significativo per questo controllo.

  • Re: TabControl TabPage Hide [RISOLTO]

    20/09/2023 - oregon ha scritto:


    Esiste ma, leggendo la

    documentazione

    MS (cosa che dovrebbe sempre essere fatta, si nota che:

    Commenti

    Questo membro non è significativo per questo controllo.

    Si esatto oregon… già visto e testato, soluzione non applicabile…  grazie mille!

    Mentre non ho trovato documentazione che utilizza Hide e spesso viene trattato l'argomento con il Remove che però non risolve affatto il problema in quanto si perderebbero i controlli presenti nella TabPage, quindi non ha senso. 

    Se non trovo il sistema opterò per un Panel da rendere Visibile true or false da sovrapporre al controlTab e che avrà le stesse dimensioni e ancoraggio. (tutto questo per non creare un nuovo oggetto Form, mi interessa avere una unica Form in questo progetto)

    In questo caso ridimensionerò e posizionerò il Panel con la stessa Size e Coordinate e Anchor del TabConcrol e renderò invisibile il TabControl.
    Quando salverò il contenuto del Panel rendo visibile il TabControl e invisibile il Panel.

  • Re: TabControl TabPage Hide [RISOLTO]

    20/09/2023 - By65Franco ha scritto:


    Se non trovo il sistema opterò per un Panel da rendere Visibile true or false da sovrapporre al controlTab e che avrà le stesse dimensioni e ancoraggio. (tutto questo per non creare un nuovo oggetto Form, mi interessa avere una unica Form in questo progetto)

    Se non trovo la soluzione con il TabPage allora opterò per un Panel … una cosa di questo tipo:

            // SERVICES - ADD/DELETE/UPDATE
            private void BtnAddService_Click(object sender, EventArgs e)
            {
                // retrieve location and size from tabcontrol
                int tabControlX = TabControlServices.Location.X + 5;
                int tabControlY = TabControlServices.Location.Y + 5;
                int tabControlWidth = TabControlServices.Width - 10;
                int tabControlHeight = TabControlServices.Height - 10;
                // set location and size panel
                PanelEdit.Location = new Point(tabControlX, tabControlY);
                PanelEdit.Size = new Size(tabControlWidth, tabControlHeight);
                PanelEdit.Anchor = AnchorStyles.Left | AnchorStyles.Top | AnchorStyles.Right | AnchorStyles.Bottom; ;
                // set controls
                PanelEdit.Visible = true;
                TabControlServices.Visible = false;
                BtnServices.Visible = false;
                BtnSetupConfig.Visible = false;
            }
    
            // SETVICES - SAVE ADD/DELETE/UPDATE
            private void BtnSaveService_Click(object sender, EventArgs e)
            {
                // set controls
                PanelEdit.Visible = false;
                TabControlServices.Visible = true;
                BtnServices.Visible = true;
                BtnSetupConfig.Visible = true;
            }
    

    Ovviamente inserirò il codice in un metodo da richiamare sia in caso di Aggiornamento, Inserimento e per l'Eliminazione del Record… 

  • Re: TabControl TabPage Hide [RISOLTO]

    Forse non hai fatto caso alla mia prima risposta

  • Re: TabControl TabPage Hide [RISOLTO]

    20/09/2023 - oregon ha scritto:


    Usa

    TabControlServices.TabPages["TabPageUpdateService"].Text = "";
    

    20/09/2023 - oregon ha scritto:


    Forse non hai fatto caso alla mia prima risposta

    A questa ti riferisci Oregon… ? ci provo subititissimo.

  • Re: TabControl TabPage Hide [RISOLTO]

    20/09/2023 - oregon ha scritto:


    Usa

    TabControlServices.TabPages["TabPageUpdateService"].Text = "";
    

    Provato Oregon, però rimane selezionabile… potrei inibire la possibilità di selezionare tale pagina fin quando non si verificano le condizioni per attivarla e quindi in tal caso dargli il Focus selezionando tale TabPage. (una cosa del genere)

    Sarebbe un ottima alternativa e basterebbe un flag bool per pilotare l'accesso a tale pagina… lo preferirei in quanto con gli eventi Validating e Validated mi risulta più semplice e veloce validare i dati inseriti prima di salvare e ritornare alla TabPage principale. 

  • Re: TabControl TabPage Hide [RISOLTO]

    20/09/2023 - oregon ha scritto:


    Forse non hai fatto caso alla mia prima risposta

    Ho rifatto una nuova ricerca sul web , ho testato e verificato e sembra che alla fine il Remove sia la cosa più banale da fare (anche se non mi piace molto).

    Pertanto salvo in Form Load la TabPage in una variabile di comodo e la rimuovo dalla raccolta della TabControl.

    Successivamente, su richiesta dell'utente, ripristino nella collection tabControl la TabPage salvata… etc etc…

    Quindi sarà una cosa di questo genere:

            TabPage tabPageSave = null;
            
    	    // FORM LOAD
            private void FrmMyservices65_Load(object sender, EventArgs e)
            {
                //hide a tab by removing it from the TabPages collection
                this.tabPageSave = TabControlServices.SelectedTab;
                this.TabControlServices.TabPages.Remove(this.tabPageSave);
            }
    
    	    
            // SERVICES - ADD/DELETE/UPDATE
            private void BtnAddService_Click(object sender, EventArgs e)
            {
                //show a tab by adding it to the TabPages collection
                if (this.tabPageSave != null)
                {
                    int loc = TabControlServices.SelectedIndex;
                    this.TabControlServices.TabPages.Insert(loc, this.tabPageSave);
                }
            }
    
Devi accedere o registrarti per scrivere nel forum
9 risposte