Domanda

In java swing posso inserire pannelli nei pannelli e così via, e non devo costruire una finestra nuova di zecca per ogni vista della mia applicazione, o pasticciare per rimuovere e aggiungere controlli.

C'è un panel clas sin C # tuttavia non vedo alcun modo di creare un 'panel form' o fondamentalmente solo un form in form designer che sia un panel e il suo contenuto.

Come faccio quindi e come ho fatto con java swing?

È stato utile?

Soluzione

Solitamente aggancio solo moduli diversi all'interno di ognuno impostando la proprietà IsMdiContainer su true nella finestra padre. Quindi creo sottomaschere che attracco usando la seguente funzione:

static class FormUtil
{
    static public void showForm(Form sender, Control reciever)
    {
        sender.ControlBox = false;
        sender.FormBorderStyle = FormBorderStyle.None;
        sender.ShowInTaskbar = false;
        sender.TopLevel = false;
        sender.Visible = true;
        sender.Dock = DockStyle.Fill;

        reciever.Controls.Clear(); //clear panel first
        reciever.Controls.Add(sender);
    }

}

quindi ogni volta che ho bisogno di ancorare un modulo all'interno di un pannello sul modulo dei genitori, faccio semplicemente:

FormUtil.showForm(new SomeForm(), this.splitContainer1.Panel1);

Questo mi permette di delegare parte della creazione del modulo a diversi designer. Funziona come un incantesimo per me, adoro sentire se esiste un modo migliore di farlo.

Altri suggerimenti

In realtà, puoi usare il controllo del pannello e impostare la proprietà Dock su Fill. In questo modo, il pannello sarà l'intera area di disegno del modulo. Quindi, puoi aggiungere pannelli secondari in base alle esigenze tramite il codice dietro o il designer dei moduli.

Esiste il concetto di controlli utente che fondamentalmente ti fornisce un pannello come la superficie del designer, per non parlare del fatto che puoi creare forme atomiche (che possono essere riutilizzate) e registrarle come ereditabili, in questo modo puoi anche fornire ereditarietà.

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