[ bokac @ 09.09.2004. 11:32 ] @
| Gnjavim se sa ovim vec nekoliko sati i vec pocinje da me izludjuje. Stvari stoje ovako. Pravim Windows Form aplikaciju (C#) na kojoj imam DataGrid sa rezultatima iz baze. Hteo bi da kada korisnik prelazi misem preko polja DataGrid-a dodje do selektovanja trenutnog reda iznad kojeg se mis nalazi. Problem je sto sam uspeo da dodjem do toga da kada korisnik prelazi misem preko redova dolazi do selektovanja istih ali zato oni ostaju selektovani i dalje. Pokusavao sam sa raznim opcijama unSelect ali rezultati nisu ono sto bih hteo. Evo ga moj trenutni kod za to pa ako neko ima neko resenje da predlozi bio bih mu zahvalan.
Code:
private void dataGrid1_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
{
System.Drawing.Point pt=new Point(e.X, e.Y);
DataGrid.HitTestInfo hti=dataGrid1.HitTest(pt);
if(hti.Type==DataGrid.HitTestType.Cell)
{
dataGrid1.CurrentCell=new DataGridCell(hti.Row, hti.Column);
dataGrid1.Select(hti.Row);
}
}
|
[ bokac @ 10.09.2004. 12:52 ] @
Jel ima neko bar neku ideju???
[ Vladan Ostojic @ 12.09.2004. 01:41 ] @
Prije nego sto uradis dataGrid1.Select(hti.Row) pozovi funkciju dataGrid1.ResetSelection()
[ bokac @ 12.09.2004. 14:15 ] @
Jel mislis u stvari na
Code:
dataGrid1.ResetSelectionBackColor();
Jel kod tebe radi??? Kod mene nece. Gotovo kao da ga nisam ni pozvao. Nema razlike.
[ Vladan Ostojic @ 12.09.2004. 16:17 ] @
Izvini, nisam obratio paznju da je funkcija ResetSelection protected. Ja sam to nekad radio ali sam koristio moj datagrid koji je nasledio DataGrid.
Kada to uradis dobices pristup ovoj funkciji
Ovako ce ti npr. izgledati klasa (ili priblizno :) posto radim napamet)
class MyDataGrid: DataGrid
{
protected override void OnMouseMove(...) {
System.Drawing.Point pt=new Point(e.X, e.Y);
DataGrid.HitTestInfo hti= HitTest(pt);
if(hti.Type==DataGrid.HitTestType.Cell)
{
this.CurrentCell=new DataGridCell(hti.Row, hti.Column);
this.ResetSelection();
this.Select(hti.Row);
}
base.OnMouseMove(e); // ovo mozda treba biti na pocetku funkcije, probaj
}
}
[ bokac @ 13.09.2004. 12:56 ] @
Pokusavam ali dobijam stalno gresku evo npr. sledeci error
C:\MyDocuments\DataGridProjekat\Form1.cs(261): 'DataGridProjekat.dataGrid1.dataGrid_MouseMove(object, System.Windows.Forms.MouseEventArgs)': no suitable method found to override
[ nervozica @ 13.09.2004. 16:55 ] @
Dodaj jednu promenljivu npr. prevPosition
Code:
private int prevPosition = -1;
private void myDataGrid_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
{
DataGrid.HitTestInfo hti = myDataGrid.HitTest(new Point(e.X, e.Y));
if(hti.Type == DataGrid.HitTestType.Cell)
{
myDataGrid.CurrentCell = new DataGridCell(hti.Row, hti.Column);
myDataGrid.Select(hti.Row);
if(prevPosition != -1 && prevPosition != myDataGrid.CurrentRowIndex)
myDataGrid.UnSelect(prevPosition);
}
prevPosition = myDataGrid.CurrentRowIndex;
}
[ bokac @ 14.09.2004. 08:26 ] @
Hvala covece, to je ono sto mi radi posao! Pokusavao sam nesto slicno da napravim sa UnSelect(hti.Row+1) i UnSelect(hti.Row-1) ali nije radilo kako treba. Hvala jos jednom. Pozdrav.
[ nervozica @ 14.09.2004. 13:27 ] @
yeah man
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.