OOP quando si utilizza una GUI Designer

3

Di solito faccio sviluppo di database e web ma al momento sto imparando lo sviluppo del desktop con Mono e Gtk # usando l'IDE di MonoDevelop. Sto anche utilizzando Stetic GUI Designer in MonoDevelop per creare la GUI.

Quali sono le migliori pratiche quando si utilizza un designer della GUI per incapsulare la logica aggiuntiva relativa a un widget utilizzato nella finestra di progettazione della GUI?

Ad esempio, potrei usare un widget TreeView ma dovrò anche avere una logica specifica su come renderanno le celle, cancellando selezioni di righe, ecc. Il mio primo pensiero sarebbe semplicemente di estendere la Treeview in questo modo:

public class MyTreeView : TreeView {}

Ma non penso di poterlo fare e usare comunque la GUI Designer (correggimi se sbaglio).

Quello che sto facendo ora è creare una classe che abbia TreeView come membro di esso:

public class MyTreeView 
{
    private widget;

    private MyTreeView(TreeView treeView)
    {
        this.widget = treeView;
    }
}

Sono sulla buona strada o ci sono dei caratteri speciali e di fantasia o una caratteristica del linguaggio C # che non so di che invece dovrei usare?

    
posta programmer 17.03.2013 - 23:18
fonte

1 risposta

3

Hai alcuni modelli che puoi seguire con lo sviluppo .NET. Questo proviene da uno sfondo di WinForms - Non ho usato GTK # anche se è probabile che le competenze siano trasferibili. Entrambi i metodi che hai discusso sono accettabili ma ciò che è corretto dipende da ciò che stai cercando di ottenere.

  1. Ricava una classe e sostituisce la funzionalità richiesta. Questa è la scelta da fare quando si vuole sovrascrivere la funzionalità di un controllo ben progettato. Ad esempio, potresti sovrascrivere OnPaint per cambiare il modo in cui il controllo dipinge. Quanto lontano si può andare con la derivazione dipende da quanto ben progettato è il controllo di base. Un esempio potrebbe sovrascrivere ComboBox per disegnare un'icona accanto agli elementi.

  2. Utilizza un controllo personalizzato se desideri la gestione completa del controllo. Questo particolare tipo è per quando si sta implementando il proprio controllo e non si desidera alcuna funzionalità aggiuntiva. Ad esempio, potresti creare da zero il controllo della vista elenco.

  3. Utilizza un controllo utente se vuoi combinare diversi controlli in una superficie. Ad esempio, potresti compartimentare parti di un modulo usando questo metodo.

risposta data 17.03.2013 - 23:35
fonte

Leggi altre domande sui tag