[ dr.AgOlO @ 06.01.2005. 18:26 ] @
Interesuje me da li postoji mogucnost da se promeni boja ovoj kontroli, ali kad kazem boja mislim bas na boju tab-ova a ne boju tabPages-a. Znaci oni dugmici na koje klikcem kada prelazim sa jednog taba na drugi trebaju da budu recimo plave boje a ne one standardne sive.

Hvala unapred.
Poz.
[ ZokiR @ 06.01.2005. 23:33 ] @
Podesi DrawMode tab kontrole na OwnerDrawFixed. Time se sprečava standardno iscrtavanje tabova, i ispaljuje se DrawItem event da bi korisnik sam iscrtao tab po potrebi. Ovaj kod pravi tabove u plavoj boji i tekst u standardnoj boji:

Code:
private void tabControl_DrawItem(object sender, System.Windows.Forms.DrawItemEventArgs e)
{
    Graphics g = e.Graphics;
    Rectangle tabRect = tabControl.GetTabRect(e.Index);
    SolidBrush backBrush = new SolidBrush(Color.Blue);
    g.FillRectangle(backBrush, tabRect);

    SolidBrush foreBrush = new SolidBrush(e.ForeColor);
    Rectangle textRect = new Rectangle(e.Bounds.X, e.Bounds.Y + 3, e.Bounds.Width, e.Bounds.Height - 3);
    StringFormat stringFormat = new StringFormat();
    stringFormat.Alignment = StringAlignment.Center;
    g.DrawString(tabControl.TabPages[e.Index].Text, e.Font, foreBrush, textRect, stringFormat);
}
[ dr.AgOlO @ 07.01.2005. 10:40 ] @
Hvala puno.

Poz.
[ dr.AgOlO @ 11.01.2005. 09:41 ] @
Opet ja,
odradio sam iscrtavanje tabova kao sto si prethodno napisao i ok je, ali jos uvek u pozadini tj. iza tabova postoji siva (valjda po defaultu) boja koju ne mogu nikako da promenim. Malo sam ceprkao po kodu i zakljucio sam da ona postoji i kada se ne pozove metod DrawItem, ali nigde ne nadjoh svojstvo pomocu kojeg bi tu boju promenio.
Ajde ako neko kako da to uradim zna neka pomogne.

Poz.
[ ZokiR @ 13.01.2005. 23:27 ] @
Moraš sam da prefarbaš pozadinu, npr. dodaj ovako nešto u DrawItem metodu:

Code:

SolidBrush parentBackBrush = new SolidBrush(tabControl.Parent.BackColor);

if (e.Index == tabControl.TabCount - 1)
{
    Rectangle tabControlRect = new Rectangle(e.Bounds.X + e.Bounds.Width, e.Bounds.Y - 2, tabControl.ClientRectangle.Width - e.Bounds.X - e.Bounds.Width, e.Bounds.Height + 4);
    g.FillRectangle(parentBackBrush, tabControlRect);
}