Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net Windows TabControl,外观=按钮,在右侧获得宽边距_.net_Winforms_Tabcontrol - Fatal编程技术网

.net Windows TabControl,外观=按钮,在右侧获得宽边距

.net Windows TabControl,外观=按钮,在右侧获得宽边距,.net,winforms,tabcontrol,.net,Winforms,Tabcontrol,我正在创建一个Windows C#/.NET应用程序,并尝试使用外观设置为按钮的TabControl。我希望选项卡只有图像,没有文本。但是,我在每个按钮的右侧都有一堆额外的填充物,我想去掉这些填充物: 我可以通过将字体大小减少到1来减少右边距,但它仍然比左侧宽几个像素,而且看起来有点笨拙。有更好的方法吗?试试这个 public frmForm() { InitializeComponent(); tabControl1.Appearance = TabAppearance.

我正在创建一个Windows C#/.NET应用程序,并尝试使用外观设置为按钮的TabControl。我希望选项卡只有图像,没有文本。但是,我在每个按钮的右侧都有一堆额外的填充物,我想去掉这些填充物:


我可以通过将字体大小减少到1来减少右边距,但它仍然比左侧宽几个像素,而且看起来有点笨拙。有更好的方法吗?

试试这个

public frmForm()
{
     InitializeComponent();
     tabControl1.Appearance = TabAppearance.Buttons;
     tabControl1.DrawMode = TabDrawMode.OwnerDrawFixed;
     tabControl1.DrawItem += new DrawItemEventHandler(tabControl1_DrawItem);
}

private void tabControl1_DrawItem(object sender, DrawItemEventArgs e)
{
    //Load the image
    Image img = Image.FromFile(String.Format("{0}\\{1}.jpg",Application.StartupPath,tabControl1.TabPages[e.Index].Name));
    //Resize image
    img = new Bitmap(img, e.Bounds.Size);
    //Draw on Tab Button
    e.Graphics.DrawImage(img, e.Bounds.Location);
}

微软几乎没有做出努力来实现这一目标。DrawMode.OwnerDrawFixed可能是使其与ItemSize集和SizeMode集一起工作的唯一方法。图像只需左对齐,选项卡宽度不能太小,因此最终会在图像右侧留出额外空间。考虑一个更合适的(更宽的)图像或ObjeDRAW。