Blog Stats
  • Posts - 647
  • Articles - 3
  • Comments - 143
  • Trackbacks - 25

 

Sunday, July 02, 2006

Recuperare i dati da una cella del DataGridView

E’ stato pubblicato un mio tip dal titolo Recuperare i dati da una cella del DataGridView. Sfruttando i generics, è possibile recuperare direttamente l’oggetto associato ad una riga del Data Grid (qualora stessimo usando una BindingList popolata da nostri oggetti).Su suggerimento di Tiziana, ne ho creato anche uno snippet che trovate qui.

Good coding :-)

ScrollToCaret

Molto spesso trovo comodo segnalare gli step di esecuzione di un programma attraverso dei messaggi scritti in una text box. Supponete ad esempio di avere in esecuzione una sfilza di stringhe sql di update o, ad esempio, il rename di una serie di file e di volerne mostrare l’andamento.

Come prima cosa piazziamo la nostra texbox sul Form e la chiamiamo tbxLogMessages.Siccome siamo bravi, sappiamo che l’operazione che andremo ad eseguire potrebbe essere lunga e la eseguiamo in un thread separato (che non è oggetto di questo post quindi non ne parlo).Siccome ormai lo abbiamo sentito ripetere 1.000.000 di volte, sappiamo anche se dai thread secondari NON DOBBIAMO MAI AGGIORNARE LA UI (lo sapevate vero???) quindi usiamo il BeginInvoke (anche questo non è oggetto del post e ne parlo in un secondo momento). Arrivati fin qui, avviamo la nostra fantastica applicazione, vediamo i messaggi arrivare sulla textBox ma, i messaggi son tanti e li vediamo sparire oltre il limite inferiore e siamo costretti a leggerli muovendo la barra di scorrimento. E’ una cosa brutta quindi ci documentiamo e vediamo che esiste un metodo denominato ScrollToCaret() che stando alla documentazione, dovrebbe automaticamente scorrere il testo fino al cursore.Modifichiamo il nostro codice aggiungendo la riga:

1    tbxLogMessages.ScrollToCaret() 

rimandiamo in esecuzione e......di nuovo come prima: il testo non scorre. Ma come? ScrollTocaret() non fa quello che dice di fare?Al contrario: quel metodo scrolla effettivamente il testo fino alla posizione del cursore. Peccato però che il cursore, dato che non stiamo scrivendo a mano nella textBox, si trovi a sinistra del primo carattere....in alto.Per far funzionare correttamente quel metodo, dobbiamo PRIMA spostare il cursore e lo facciamo col seguente codice:

1    tbxLogMessages.SelectionStart = tbxLogMessages.Text.Length; 

Poi possiamo chiamare ScrollTocaret() e vedere il nostro testo scorrere effettivamente.Di seguito il frammento di codice completo:

1    public void InvokeMethod(string text) { 
2      tbxLogMessages.Text += text+"\r\n";
3      tbxLogMessages.SelectionStart = tbxLogMessages.Text.Length;
4      tbxLogMessages.ScrollToCaret(); 
5    } 

Stasera è stata la 3 volta che cercavo la stessa informazione così....ci ho fatto un post...chissà la prossima volta.....   

Community Credit 5

Questo è il secondo mese che partecipo alla “competizione” di community-credti e devo dire che mi ci stò divertendo parecchio. Lo scorso mese mi classificai sesto vincendo l’utilissimo Finger Flick Punching Bag :-P. Questo mese ho recuperato una posizione vincendo il fantastico Programmable Binary Robot :-D.

Non vedo l’ora che arrivito tutte e 2 ;-)

Ma questo mese sono molto contento perchè di italiani, in zona premi, eravamo un bel po’.Si inizia da Lorenzo che vince il coniglietto wi-fi dal nome inpronunciabile amichevolmente definito “ il cazzetto wi-fi”. Simone vince lo zainetto Yoda, poi ci sono io, il nostro Vito Mr.Tip Arconzo con un decimo posto (fino all'ultimo m'hai fatto sudare Vito!) e l'amico Igor Damiani all’11°. Una “blog-cronaca” completa la trovate sul post di Simone.

Il prossimo mese la competizione sarà davvero dura perchè:

  1. I premi sono stupendi!!!
  2. È estate...e fare punti sarò difficle!

In bocca al lupo a tutti i partecipanti

 

 

Copyright © Mighell |  Theme by Mighell.