如何让TabControl使用其父级的全宽?

Sim*_*mon 6 .net c# tabcontrol winforms

标准的System.Windows.Forms.TabControl组件在其包含的TabPages周围绘制边框.如果将Dock设置为Fill,这些边框将运行到父控件的边缘,但它们仍然存在,占用屏幕空间.

在Visual Studio中,如果将两个窗口停靠在同一位置,则会在底部获得一组类似TabControl的选项卡,但两侧没有边框.

是否有可能让TabControl以这种方式显示其TabPages,两侧没有浪费的屏幕空间?如果可能的话,我想避免使用自己绘制控件的解决方案.

Dan*_*aan 9

  1. 从TabControl中删除高度和宽度属性
  2. 设置水平和垂直对齐以进行拉伸

例如不会拉伸;

<TabControl Height="373" Width="609" HorizontalAlignment="Stretch" Name="tabControl1" VerticalAlignment="Stretch"  VerticalContentAlignment="Stretch" HorizontalContentAlignment="Stretch">
Run Code Online (Sandbox Code Playgroud)

例如会伸展;

<TabControl HorizontalAlignment="Stretch" Name="tabControl1" VerticalAlignment="Stretch"  VerticalContentAlignment="Stretch" HorizontalContentAlignment="Stretch">
Run Code Online (Sandbox Code Playgroud)

  • 我认为这个答案适用于WPF,而不是WinForms (6认同)
  • 它**在WPF中工作**!非常感谢! (6认同)

Phi*_*ght 5

您应该尝试使用Anchor锚定四个边中的每一个,而不是使用Dock属性.然后你需要定位TabControl,使它在父级的所有边上都放置几个像素.这样就隐藏了边框,因为在父控件后面无法绘制边框.


Sco*_*man 1

使用标准 .NET 选项卡控件,这是不可能直接实现的。这样做的最终目标是什么?您是否正在尝试模拟与 Visual Studio 相同类型的选项卡式 MDI 样式显示?如果是这种情况,有几种可用的第三方解决方案 - 一些是开源的,一些是商业的。

关于使用 Anchor 属性并设置大小使其比实际窗口大一点的其他响应可能会起作用,但我认为它在视觉上看起来可能有点奇怪。无论主题和辅助功能设置如何,它都应该有效,但您最终可能必须以编程方式将大小设置为比父级大几个像素。