0

DrawModeに設定されたタブコントロールがありOwnerDrawFixedます。タブを描画して色を付けることができました。Black選択したタブに別のペイントを描画して色を付けることGrayです。これは私のDraw_Itemイベントです。

private void tabControl1_DrawItem(object sender, DrawItemEventArgs e)
{
    //This is the code i want to use to color the selected tab (e.Graphics.FillRectangle(Brushes.Gray, e.Bounds.X, e.Bounds.Y, 200, 32);
    e.Graphics.FillRectangle(Brushes.Black, e.Bounds.X, e.Bounds.Y, 200, 32);
    e.Graphics.DrawString("x", e.Font, Brushes.Black, e.Bounds.Right-17, e.Bounds.Top+4);
    e.Graphics.DrawString(this.tabControl1.TabPages[e.Index].Text, e.Font, Brushes.White, e.Bounds.Left + 12, e.Bounds.Top + 4);
    e.DrawFocusRectangle();
    if (e.Index == activeButton)
        ControlPaint.DrawBorder(e.Graphics, new Rectangle(e.Bounds.Right - 22, e.Bounds.Top + 4, 20, 20), Color.Blue, ButtonBorderStyle.Inset);
}

TabPage current現在のタブページを保存するために使用するグローバル変数を作成しました。SelectedIndexChangedイベントでは、選択したタブを変数に割り当て、タブのInvalidate();再描画を強制するために呼び出しました。

private void tabControl1_SelectedIndexChanged(object sender, EventArgs e)
{
    current = tabControl1.SelectedTab;
    tabControl1.Invalidate();
}

今私が立ち往生しているのは、DrawItemイベントで選択したタブだけに色を付ける方法です。

私の質問は、DrawItemイベントで選択したタブを確認し、選択したタブのみをペイントする方法です。

4

1 に答える 1