November 2008 Blog Posts

Windows.Forms - MaskedTextBox - selezione automatica del testo

Può essere utile, per alcune applicazioni aggiungere una funzionalità di selezione automatica del testo, quando il fuoco viene attivato su di un controllo MaskedTextBox. Apparentemente la soluzione sembra banale: chiamare il metodo SelectAll() del controllo, sull'evento OnEnter. Però questa soluzione non funziona, per ragioni di design infatti l'implementazione del controllo sovrascrive questa operazione subito dopo l'esecuzione dell'evento. Per ovviare a questo problema basta semplicemente "posticipare" l'esecuzione dell'operazione SelectAll() eseguendola in modo asincrono con una BeginInvoke. Esempio di codice gestione evento OnEnter() utilizzando una lambda expression     private void mtxCognome_Enter(object sender, EventArgs e)     {          BeginInvoke((MethodInvoker)(() => mtxCognome.SelectAll()));     } Una soluzione alternativa è quella di...

posted @ Sunday, November 30, 2008 8:57 PM | Feedback (0)

Chiamare un indexer via reflection

Per chiamare un indexer via reflection basta utilizzare in modo opportuno il metodo InvokeMember sul tipo di classe specifica. Immaginiamo di avere un indexer di tipo object che utilizza come indice una stringa.     public class IndexerExample     {        ...         public object this[string indexer]        {             get {...}             set {...}        }        ...     } Per chiamare l'Indexer è sufficiente passare il valore "Item" come PropertyName al metodo InvokeMember.         private void TestIndexerByReflection()         {             double numPI = 3.141592654;               IndexerExample example = new IndexerExample();               //Utilizzando l'oggetto di tipo IndexerExample             example["numPI"] = num3;             Console.WriteLine(example["numPI"]);               //Utilizzando la reflection             Type type = typeof (IndexerExample);                //example["numPI"] = numPI;    ...

posted @ Saturday, November 8, 2008 2:11 PM | Feedback (0)