Domanda

Ciao, sto pensando di creare un controllo a schede in cui le pagine a schede verranno filtrate dai clic nel menu.

Ad es.

Il mio menustrip è nella forma 1 e il mio controllo a schede è nella forma 2

Il mio controllo a schede è composto da 7 schede e desidero che venga visualizzata solo 1 scheda alla volta.

ad esempio Se faccio clic sul nome nel menu, si aprirà / mostrerà un nuovo modulo e il tabcontrol mostrerà solo la scheda dei nomi.

Mi chiedo se sia possibile perché creare moduli diff per ogni elenco sembra essere molto lungo.

grazie per aver letto questo.

È stato utile?

Soluzione

Il problema è che il controllo TabPage non ha la proprietà Visible (beh, lo ha, ma non fa nulla).Quindi non puoi nascondere e mostrare le schede a piacimento.Dovrai rimuovere le schede che non dovrebbero essere visibili.

Potresti creare un form (denominato TabbedForm) con codice come questo:

private readonly int _index;

public TabbedForm(int index)
{
  this._index = index;
  InitializeComponent();
}

private void form_Load(object sender, EventArgs e)
{
  for (int index = this.tabControl1.TabPages.Count - 1; index >= 0; index--)
  {
    if (index != this._index)
      this.tabControl1.TabPages.Remove(this.tabControl1.TabPages[index]);
  }
}

Con ogni pulsante del menu (evento Clicked) nel modulo principale puoi aprire un TabbedForm con un indice diverso.

Altri suggerimenti

Sì, funzionerà abbastanza bene.Ma penso che tu debba usare il controllo di visualizzazione a schede predefinito per questo e questo non deve creare il problema neanche in te.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top