Как мне получить TabControl, чтобы использовать всю ширину его родителя? - PullRequest
6 голосов
/ 29 января 2009

Стандартный компонент System.Windows.Forms.TabControl рисует границу вокруг вкладок, которые он содержит. Если установить для Dock значение Fill, эти границы доходят до края родительского элемента управления, но они все еще там, занимая место на экране.

В Visual Studio, если вы закрепите два окна в одном месте, вы получите набор вкладок, подобный TabControl, вдоль нижней части, но без границ по сторонам.

Можно ли заставить TabControl отображать свои вкладки таким образом, не теряя места на экране по бокам? Если возможно, я бы хотел избежать решений, связанных с покраской элемента управления самостоятельно.

Ответы [ 6 ]

8 голосов
/ 19 сентября 2012
  1. Удалить атрибуты высоты и ширины из TabControl
  2. Установить горизонтальное и вертикальное выравнивание на растяжение

например. не растянется;

<TabControl Height="373" Width="609" HorizontalAlignment="Stretch" Name="tabControl1" VerticalAlignment="Stretch"  VerticalContentAlignment="Stretch" HorizontalContentAlignment="Stretch">

например. растянется;

<TabControl HorizontalAlignment="Stretch" Name="tabControl1" VerticalAlignment="Stretch"  VerticalContentAlignment="Stretch" HorizontalContentAlignment="Stretch">
5 голосов
/ 03 февраля 2009

Вместо использования свойства Dock вы должны попытаться использовать Anchor для привязки каждой из четырех сторон. Затем вам нужно расположить TabControl так, чтобы он был на пару пикселей больше со всех сторон, чем родительский элемент. Таким образом, границы скрыты, потому что они не могут быть нарисованы за родительским элементом управления.

1 голос
/ 10 августа 2009

Используя стандартный вкладку .NET, это невозможно сделать напрямую. Какова конечная цель для этого? Вы пытаетесь смоделировать тот же тип отображения в стиле MDI с вкладками, что и в Visual Studio? Если это так, есть несколько сторонних решений - некоторые с открытым исходным кодом, а некоторые коммерческие.

Другие ответы об использовании свойства Anchor в сочетании с установкой размера, чтобы он был немного больше, чем фактическое окно, могли бы работать, но я думаю, что это может выглядеть немного странно визуально. Он должен работать независимо от темы и настроек специальных возможностей, но вам может понадобиться программно установить размер на несколько пикселей больше, чем родительский.

0 голосов
/ 17 апреля 2012
<Grid>
   <TabControl Name="tabControl1" >
       <TabItem Header="tabItem1" Name="tabItem1">
          <Grid />
       </TabItem>
       <TabItem Header="tabItem2" Name="tabItem2">
          <Grid />
       </TabItem>
       <TabItem Header="tabItem3" Name="tabItem3">
          <Grid />
       </TabItem>
  </TabControl>
</Grid>
0 голосов
/ 07 февраля 2009

Не закрепляйте TabControl. Протяните его на конструкторе так, чтобы его левый и правый края выходили за пределы окна.

0 голосов
/ 03 февраля 2009

Прикрепите левую и правую стороны элемента управления с шириной, равной ширине родительского элемента управления.

childControl.Anchor = Anchor.Left | Anchor.Right; childControl.Width = parentControl.Width;

...