MSDNTabControl
で説明されているように、 で仕事を終わらせることができます。タブを右側に配置する方法の例を示していますが、「右」と「左」を切り替えると、求める動作が得られるはずです。
私はWinFormsアプリで試してみましたが、例で使用されている醜い色にもかかわらず、うまく動作しているようです.以下は実装に約30秒かかります.
リンクから引用:
タブを右揃えで表示するには
- フォームに TabControl を追加します。
- 配置プロパティを右に設定します。Left に設定すると、問題なく左に進みます
- すべてのタブが同じ幅になるように、SizeMode プロパティを Fixed に設定します。
- ItemSize プロパティをタブの適切な固定サイズに設定します。タブは右揃えですが、ItemSize プロパティはタブが上にあるかのように動作することに注意してください。その結果、タブの幅を広げるには Height プロパティを変更する必要があり、タブの高さを高くするには Width プロパティを変更する必要があります。
- DrawMode プロパティを OwnerDrawFixed に設定します。
- テキストを左から右にレンダリングする TabControl の DrawItem イベントのハンドラーを定義します。
これがコードです (MSDN では VB しか表示されないため、C# に変換されています)。
private void tabControl1_DrawItem(object sender, DrawItemEventArgs e)
{
Graphics g = e.Graphics;
Brush _TextBrush = default(Brush);
// Get the item from the collection.
TabPage _TabPage = tabControl1.TabPages[e.Index];
// Get the real bounds for the tab rectangle.
Rectangle _TabBounds = tabControl1.GetTabRect(e.Index);
if ((e.State == DrawItemState.Selected))
{
// Draw a different background color, and don't paint a focus rectangle.
_TextBrush = new SolidBrush(Color.Red);
g.FillRectangle(Brushes.Gray, e.Bounds);
}
else
{
_TextBrush = new System.Drawing.SolidBrush(e.ForeColor);
e.DrawBackground();
}
// Use our own font.
Font _TabFont = new Font("Arial", 10, FontStyle.Bold, GraphicsUnit.Pixel);
// Draw string. Center the text.
StringFormat _StringFlags = new StringFormat();
_StringFlags.Alignment = StringAlignment.Center;
_StringFlags.LineAlignment = StringAlignment.Center;
g.DrawString(_TabPage.Text, _TabFont, _TextBrush, _TabBounds, new StringFormat(_StringFlags));
}
コンテンツを TabControl に入れるだけで、(ちょっと) 準備完了です。