PDA

View Full Version : [C#]DataGridView determinare posizione testo


RaouL_BennetH
21-03-2012, 15:01
Tra me e me..... ero riuscito a lasciare l'ambiente "winforms" ma purtroppo....

allora, la mia problematica odierna è la seguente:

una classica datagridview che ospita dei dati.

Vengono fatte varie ricerche e la griglia di volta in volta viene popolata in base ai risultati.

Ciò che devo fare è selezionare il testo ricercato, un "highlight".
Non c'è modo di farlo in maniera tradizionale per diversi motivi: la datagridview non dispone di un metodo Find e, la colonna di questa griglia deriva dall'oggetto richtextbox per ospitare del testo RTF.

A prescindere da questo, l'unico modo che vedo per poter evidenziare porzioni di testo all'interno di una determinata cella è di disegnarci un bel rettangolo sopra che prenda la posizione di partenza del testo e la lunghezza.

C'è modo di conoscere la posizione del testo all'interno di una cella ?

Grazie :)

RaouL.

U235
21-03-2012, 23:48
Tra me e me..... ero riuscito a lasciare l'ambiente "winforms" ma purtroppo....

allora, la mia problematica odierna è la seguente:

una classica datagridview che ospita dei dati.

Vengono fatte varie ricerche e la griglia di volta in volta viene popolata in base ai risultati.

Ciò che devo fare è selezionare il testo ricercato, un "highlight".
Non c'è modo di farlo in maniera tradizionale per diversi motivi: la datagridview non dispone di un metodo Find e, la colonna di questa griglia deriva dall'oggetto richtextbox per ospitare del testo RTF.

A prescindere da questo, l'unico modo che vedo per poter evidenziare porzioni di testo all'interno di una determinata cella è di disegnarci un bel rettangolo sopra che prenda la posizione di partenza del testo e la lunghezza.

C'è modo di conoscere la posizione del testo all'interno di una cella ?

Grazie :)

RaouL.

Ciao, non mi è chiara una cosa, se la tua cella deriva da richtextbox (immagino che intendessi la cella non la colonna), perchè non puoi usare le sue funzioni? come l'hai implementata? puoi postarla?

RaouL_BennetH
27-03-2012, 15:37
Ciao, non mi è chiara una cosa, se la tua cella deriva da richtextbox (immagino che intendessi la cella non la colonna), perchè non puoi usare le sue funzioni? come l'hai implementata? puoi postarla?

Hai ragione, l'oggetto è un DataGridViewRichTextBoxColumn ed implementa anche un DataGridViewRichTextBoxCell.

L'oggetto è questo:

http://www.codeproject.com/Articles/31823/RichTextBox-Cell-in-a-DataGridView

In origine ero certo che potessi utilizzare i metodi di un richtextbox, pensando di fare una cosa del genere:


foreach (DataGridViewRow row in gridView.Rows)
{
foreach (DataGridViewCell cell in row.Cells)
{
if (!cell.IsInEditMode && cell is DataGridViewRichTextBoxCell)
{
gridView.CurrentCell = cell;
gridView.BeginEdit(false);
}
RichTextBox rtb = gridView.EditingControl as RichTextBox;
if (rtb != null)
{
rtb.SelectedRtf = someValue;
}
}
}


Ma è come se rtb fosse sempre null, oppure mi seleziona il contenuto dell'intera cella portandomi all'ultima riga della griglia.