web-dev-qa-db-ja.com

tabControlのタブサイズを変更する

TabTabControlのグラフィックを再描画しましたが、Widthを設定できません。

私が欲しいのは、Tabとアイコンのテキストがそのサイズに含まれていることです。

今はこのようなものです:

tabs are overlaid

私のコード

private void tabControlForm_DrawItem(object sender, DrawItemEventArgs e)
{

   try
   {
       using (Brush br = new SolidBrush(TabColors[tabControlForm.TabPages[e.Index]]))
       {
           Rectangle rect = e.Bounds;

           rect.Width += 10;

           e.Graphics.FillRectangle(br, rect);
           SizeF sz = e.Graphics.MeasureString(tabControlForm.TabPages[e.Index].Text, e.Font);
           e.Graphics.DrawString(tabControlForm.TabPages[e.Index].Text, e.Font, Brushes.Black, rect.Left + (rect.Width - sz.Width) / 2, rect.Top + (rect.Height - sz.Height) / 2 + 1);

           using (var src = new Bitmap(System.Reflection.Assembly.GetEntryAssembly().GetManifestResourceStream("Castor.Gestionale.images.close-button.png")))
           {
              e.Graphics.DrawImage(src, rect.Right - 18, rect.Top + 10);
           }

           e.Graphics.DrawRectangle(Pens.DarkGray, rect);
           e.DrawFocusRectangle();
       }
   }
   catch {}
}

ありがとう

8

残念ながら、TabControlTabPages'タブヘッダーの幅を制御する組み込みのプロパティはありません個別に (編集:明らかに、それをまとめて制御するTabControl.ItemSizeがあります。タブコントロールの下のすべてのタブページの幅を修正するには、TaWの回答を参照してください)。

ただし、TabPage.Textの左側または右側に追加のspacesを追加して、アイコン用に十分なスペースを確保することもできます。

スペースなし:

enter image description here

7つのスペース:

enter image description here

それはあなたのアイコンを置くのに十分でなければなりません

9
Ian

実際には、タブのサイズを設定できますが、個別に設定することはできません。

SizeMode = FixedTabControl.Itemsizeの適切な値の組み合わせにより、任意のサイズが作成されますが、常に同じです。

enter image description here

したがって、アイコンをフィットさせるために各タブを個別に拡大するには、Ianの「スペーシー」メソッドを使用する必要があります。

15
TaW

これを使って...

private void FrmSqlMain_Load(object sender, EventArgs e)
 {
     myTabControl.SizeMode = TabSizeMode.Normal;
     myTabControl.DrawMode = TabDrawMode.OwnerDrawFixed;
 }
1
binhnguyenpth

「myTabControl.Padding.X」を増やしてみてください。わたしにはできる!

0
Nader