Stimmt, da ist es ja auch möglich.
Ich mache es nun wie folgt, ich habe von vornherein eine Methode "setNeededDetails", wo ich die Liniennummer und somit die Nummer des "Tabs" als Property setze.
Innerhalb dieser Methode führe ich auch ein "this.invalidate();" aus um das Control neu zu zeichnen.
Die Border des TabControl zeichne ich in der OnPaint und zwar nur die Border links, oben und unten.
Bei Auswahl einer Linie wird dann das rechte Panel neu gezeichnet und somit die OnPaint aufgerufen. Diese sieht wie folgt aus:
private void DownTimeDetailInfo_Paint(object sender, PaintEventArgs e)
{
//get Panel rect
Rectangle rect = new Rectangle(0, 0, this.Width - 1, this.Height - 1);
// Create Graphic for border
Graphics border = this.CreateGraphics();
// draw top, bottom and right border
ControlPaint.DrawBorder3D(border, rect, Border3DStyle.SunkenOuter, Border3DSide.Top);
ControlPaint.DrawBorder3D(border, rect, Border3DStyle.SunkenOuter, Border3DSide.Bottom);
ControlPaint.DrawBorder3D(border, rect, Border3DStyle.SunkenOuter, Border3DSide.Right);
Pen borderpen = new Pen(Color.Gray);
// calculate endpoint for first Line of left border
int selectedLineTop = this.lineNumber*57+115-100;
// calculate beginningpoint for second Line of left border
int selectedLineBottom = selectedLineTop + 57;
// draw border
border.DrawLine(borderpen, 0, 0, 0, selectedLineTop);
border.DrawLine(borderpen, 0, selectedLineBottom, 0, this.Height);
this.BackColor = Color.LightGray;
}