[ zoranpro @ 09.04.2009. 11:32 ] @
Pozdrav,
hteo bih da postavim da selekcija u DataGridView bude u boji koja transparentna (npr. transparentno plava).
Probao sam razne varijantne i kada probam da postavim da boja bude transparentna selekcija bude u crnoj boji...
Da li neko ima ideju kako bi mogao da resim problem?
Evo kod koji sam probao:

Code:
 

public MyDataGrid()
        {
            InitializeComponent();

            Color paternColor = Color.Blue;
            Color backColor = Color.FromArgb(45, paternColor.R, paternColor.G, paternColor.B);

            DataGridViewCellStyle cellStyle = new DataGridViewCellStyle();
            cellStyle.SelectionBackColor = backColor;
            cellStyle.SelectionForeColor = Color.Black;
            DefaultCellStyle = cellStyle;
            DoubleBuffered = true;
        } 



protected override void OnCellPainting(DataGridViewCellPaintingEventArgs e)
        {
          
                Color paternColor = Color.Blue;
                Color backColor = Color.FromArgb(45, paternColor.R, paternColor.G, paternColor.B);

                using (Brush backBrush = new SolidBrush(backColor))
                {
                    e.Graphics.FillRectangle(backBrush, e.CellBounds);

                }
            
        }

 
[ deerbeer @ 09.04.2009. 12:48 ] @
Pogledaj ovde :
http://msdn.microsoft.com/en-u...viewcellpaintingeventargs.aspx
Obrati paznju na e.Handled = true ; sto govori da je crtanje zavrseno tj . da se ne poziva sistemsko iscrtavanje(farbanje) celije .
Takodje sve moras odraditi rucno kroz GDI funkcije (fokus selekcije , farbanje unutrasnjosti celije, crtanje string-a itd).
[ zoranpro @ 09.04.2009. 12:59 ] @
Moja varijanta je radila za bilo koju boju ali koja nije transparentna, cim stavim da ima malo transparentnosti sve celije postaju crne, dok su ovako u boji koja mi treba. kad postavim da je e.Hadled = true bukvalno moram sve da crtam... Da li postoji neko drugo resenje?
[ deerbeer @ 09.04.2009. 13:22 ] @
Pa tesko da ces na taj nacin uspeti .
Mozes da probas da dodas stil WS_EX_TRANSPARENT tvom DataGrdiView-u.
http://www.bobpowell.net/transcontrols.htm

Ali u tom slucaju dobijas potpunu transparentnost prozora tj. tvog Grid-a
ali ne mozes menjati njegov alfa kanal za prikaz tj. semitransparentnost.

Ovakve pikanterije mozes jedino ako primenis WS_EX_LAYERED stil tvom prozoru uz pomoc UpdateLayeredWindow api funkcije :
http://msdn.microsoft.com/en-us/library/ms997507.aspx
ali cisto sumnjam da ce to raditi na DataGridView-u tj. na njegovim celijama
vec samo na obicnim prozorima koji koriste 32 bitne bitmape ili png-ove za layout .
[ zoranpro @ 09.04.2009. 14:34 ] @
Ovo mi ne zavrsava posao... Ono sto meni i dalje nije jasno zasto se prikazuje crna boja kad postavim da ima malo transparentnosti????