TabControl DrawItem TabPage Rengini Ayarla - CSharp


Verilen TabControl nesnesinde DrawItem olayı ile TabPage rengini ayarlamaya yarayan csharp kodu alternatifidir.

Kod


/// <summary>
/// TabControl nesnesi üzerindeki TabPage 
/// nesnelerinin sekme başlıklarının 
/// rengini ayarlamaya yarıyor.
/// </summary>
/// <param name="sender">Event, sender parametresi.</param>
/// <param name="e">Event, DrawItemEventArgs e parametresi.</param>
/// <param name="tabControl">TabControl nesnesi.</param>
public static void DrawItem_TabPageRenginiAyarla(object sender, DrawItemEventArgs e, TabControl tabControl)
{
    tabControl.DrawMode = TabDrawMode.OwnerDrawFixed;
    TabPage page = tabControl.TabPages[e.Index];
    e.Graphics.FillRectangle(new SolidBrush(Color.DarkGray), e.Bounds);

    //Rectangle paddedBounds = e.Bounds;
    //int yOffset = (e.State == DrawItemState.Selected) ? -2 : 1;
    //paddedBounds.Offset(0, 0 /* yOffset */);

    TextRenderer.DrawText(e.Graphics, page.Text, tabControl.Font, e.Bounds, Color.Black);

    //https://stackoverflow.com/a/2109796
}


/// <summary>
/// TabControl nesnesine ait TabPage nesnelerinin
/// arkaplan renklerini değiştirmeye yarıyor.
/// </summary>
/// <param name="sender">Event, sender parametresi.</param>
/// <param name="e">Event, DrawItemEventArgs e parametresi.</param>
/// <param name="tabControl">TabControl nesnesi.</param>
/// <param name="brush">Brush nesnesi.</param>
public static void DrawItem_TabPageArkaPlanRenklendir(
    object sender, DrawItemEventArgs e, TabControl tabControl, Brush brush)
{
    Rectangle lasttabrect = tabControl.GetTabRect(tabControl.TabPages.Count - 1);
    RectangleF emptyspacerect = new RectangleF(
            lasttabrect.X + lasttabrect.Width + tabControl.Left,
            tabControl.Top + lasttabrect.Y,
            tabControl.Width - (lasttabrect.X + lasttabrect.Width),
            lasttabrect.Height);

    e.Graphics.FillRectangle(brush, emptyspacerect);
}

Etiketler
csharp