C#TAB控制拉丝固定

C#TAB控制拉丝固定,c#,winforms,.net-3.5,tabs,tabcontrol,C#,Winforms,.net 3.5,Tabs,Tabcontrol,我正在使用TabControl,我已经修复了DrawControl。我只想画标签,而不是它下面的面板 我怎样才能删除它 另外我想问一下,我可以改变标签的大小吗?我有一个很长的文本,如果它被选中,我希望看到所有的文本,但如果它不是活动的,我希望看到它被裁剪 我在draw事件中有以下内容,但它总是以相同的大小绘制选项卡 if (e.State == DrawItemState.Selected) { e.Graphics.FillRectangle(Brushes.White, e.Bou

我正在使用TabControl,我已经修复了DrawControl。我只想画标签,而不是它下面的面板

我怎样才能删除它

另外我想问一下,我可以改变标签的大小吗?我有一个很长的文本,如果它被选中,我希望看到所有的文本,但如果它不是活动的,我希望看到它被裁剪

我在draw事件中有以下内容,但它总是以相同的大小绘制选项卡

if (e.State == DrawItemState.Selected)
{
    e.Graphics.FillRectangle(Brushes.White, e.Bounds.Left, e.Bounds.Top, e.Bounds.Width, e.Bounds.Height);
}
else
{
    e.Graphics.FillRectangle(Brushes.LightGray, e.Bounds.Left, e.Bounds.Top, e.Bounds.Width, e.Bounds.Height);
    text = text.Length > 10 ? text.Substring(0, 10) + "..." : text;
}

e.Graphics.DrawString(text, e.Font, Brushes.Black, e.Bounds.Left + 17, e.Bounds.Top + 3);

提前谢谢。

在你的问题中,按时间顺序,你问了如何去掉顶部的那个酒吧。如果您坚持使用“人造”选项卡页面,其中选项卡仅控制固定控件集的内容,那么将选项卡控件的高度缩小到不可见的程度可能是一个可接受的解决方案。我刚试过,经过一些调整,它看起来基本上就是我认为你想要的。作为记录,我建议实际使用预期的选项卡页面,即作为控件的宿主,即使您创建了一个自定义控件,将所有希望显示的控件组合在一起。这将更好地适应选项卡范例

对于第二点,您需要调整选项卡的大小。不可能的。框架为
DrawStyle
提供了两个选项,普通和
OwnerDrawFixed
Normal
允许Windows根据文本和字体设置选项卡大小,
OwnerDrawFixed
表示选项卡大小完全固定。对这一点没有更多的控制
OwnerDrawFixed
允许您访问
OnDrawItem
事件,这是您希望用于绘制选项卡本身的事件

现在看来,您已经咬紧牙关,并将UserPaint设置为True,这意味着您现在正在绘制所有的图形。我建议此时将
DrawStyle
设置回
Normal
,然后您可以将一些幕后文本混在一起,让Windows自动控制选项卡宽度。我要警告的是,这将不是非常稳健,因为每个人都有不同的字体设置和几个像素,没有什么会画对

因此,这里我将指出
TabControl.GetTabRect(索引为整数)
,您可以使用该方法来获取给定选项卡的边框。我在所有选项卡索引上循环使用它,然后在每个选项卡提供的矩形内绘制选项卡所需的所有图形。这意味着我不需要使用
OwnerDrawFixed
来获取要在其中绘制的边界


然而,如果您想要更好的控制,那么从
control
UserControl
开始,您就可以完全实现您想要看到的任何控制。类似的外观可以通过重叠的按钮来实现,这些按钮具有一些绘制和布局的逻辑。然后,您还可以获得所需的所有文本外观。我自己也考虑过同样的问题,但没有考虑,因为我仍然在托管
TabPages
。既然你不必担心,那就更容易了……

在你的问题中按时间顺序排列,你已经问过如何去掉顶部的那个条。如果您坚持使用“人造”选项卡页面,其中选项卡仅控制固定控件集的内容,那么将选项卡控件的高度缩小到不可见的程度可能是一个可接受的解决方案。我刚试过,经过一些调整,它看起来基本上就是我认为你想要的。作为记录,我建议实际使用预期的选项卡页面,即作为控件的宿主,即使您创建了一个自定义控件,将所有希望显示的控件组合在一起。这将更好地适应选项卡范例

对于第二点,您需要调整选项卡的大小。不可能的。框架为
DrawStyle
提供了两个选项,普通和
OwnerDrawFixed
Normal
允许Windows根据文本和字体设置选项卡大小,
OwnerDrawFixed
表示选项卡大小完全固定。对这一点没有更多的控制
OwnerDrawFixed
允许您访问
OnDrawItem
事件,这是您希望用于绘制选项卡本身的事件

现在看来,您已经咬紧牙关,并将UserPaint设置为True,这意味着您现在正在绘制所有的图形。我建议此时将
DrawStyle
设置回
Normal
,然后您可以将一些幕后文本混在一起,让Windows自动控制选项卡宽度。我要警告的是,这将不是非常稳健,因为每个人都有不同的字体设置和几个像素,没有什么会画对

因此,这里我将指出
TabControl.GetTabRect(索引为整数)
,您可以使用该方法来获取给定选项卡的边框。我在所有选项卡索引上循环使用它,然后在每个选项卡提供的矩形内绘制选项卡所需的所有图形。这意味着我不需要使用
OwnerDrawFixed
来获取要在其中绘制的边界


然而,如果您想要更好的控制,那么从
control
UserControl
开始,您就可以完全实现您想要看到的任何控制。类似的外观可以通过重叠的按钮来实现,这些按钮具有一些绘制和布局的逻辑。然后,您还可以获得所需的所有文本外观。我自己也考虑过同样的问题,但没有考虑,因为我仍然在托管
TabPages
。由于您不必担心,这将更容易…

只需使用页面文本默认属性,它将根据文本大小为您自动调整选项卡大小。。然后自己画文本。。如果您仍然需要额外的空间来绘制图像或其他东西,则使用padding,这是选项卡控件的属性,而不是选项卡页面。我希望它能为您提供全面帮助。

只需使用页面文本默认属性,它将根据文本大小为您自动调整选项卡大小。。然后自己画文本。。如果您仍然需要额外的空间来绘制图像或其他东西,请使用padding,这是tab control的属性