2008-09-18 8 views
7

Ho un'applicazione Windows Form con controlli come textbox, combobox, datagridview ecc. Questi controlli consentono a un utente di utilizzare il clipboad, ovvero tagliare/copiare e incollare il testo. È anche possibile cancellare il testo (che non è correlato agli appunti).Come faccio ad abilitare/disabilitare il menu Taglia/Copia/Incolla e gli elementi della barra degli strumenti in un modo generico?

La mia applicazione ha una barra dei menu con un elemento Modifica contenente Taglia/Copia/Incolla/Elimina elementi e una barra degli strumenti con questi elementi. Come posso abilitare/disabilitare queste voci correttamente in base allo stato del controllo che ha lo stato attivo?

Sto cercando un modo generico, cioè cerco un'implementazione che faccio una volta e posso riutilizzarla per il futuro indipendentemente dai controlli che la mia applicazione utilizzerà.

risposta

0

Creare una matrice per ciascun gruppo di abilitazione/disabilitazione. Aggiungi i controlli all'array (ovviamente deve essere del tipo corretto come Object o Any, ecc. Dipende dal linguaggio di programmazione che stai usando). Quindi per abilitare, disabilitare solo il ciclo attraverso la matrice e richiamare il metodo di abilitazione/disabilitazione o la funzione per ciascun controllo. Ancora una volta, a seconda della lingua che potrebbe essere necessario il riavvio.

3

Non esiste un'interfaccia generica o un insieme di metodi per ottenere informazioni di copia/incolla/copia da un controllo di moduli di Windows.

Suggerisco che l'approccio migliore sarebbe creare una classe wrapper per ogni tipo di controllo. Quindi, quando si desidera aggiornare lo stato del menu, si ottiene il controllo corrente con il focus e si crea il wrapper appropriato per esso. Quindi chiedi a quel wrapper informazioni sullo stato di cui hai bisogno. In questo modo è sufficiente creare un'implementazione wrapper per ogni tipo di controllo che si utilizza. Un po 'di dolore per iniziare, ma altre volte è sufficiente aggiungere i nuovi controlli che si incontrano.

Le informazioni sugli appunti sono molto più semplici in quanto è possibile chiedere al singleton degli appunti se contiene dati all'interno e di che tipo si tratta. Poi di nuovo devi ancora chiedere al controllo del target se può accettare quel tipo di informazioni, quindi c'è ancora bisogno di lavoro extra.