2014-09-04 3 views
0

Извините за этот вопрос, но я погуглить «C# вертикальное меню бара» на некоторое время, и я не могу найти тот, который выглядит примерно так: enter image description hereвертикальная панель навигации?

Нет, я не делаю шкаф для осмотра, но это единственный образ, который я могу найти в том, что я ищу.

Может ли кто-нибудь сказать мне, как это сделать?

+1

Похож на вертикальные вкладки. WinForms или WPF? –

+0

Я отредактировал ваш заголовок. Пожалуйста, смотрите: «Если вопросы включают« теги »в их названиях?] (Http://meta.stackexchange.com/questions/19190/), где консенсус« нет, они не должны ». –

+0

Я использую WinForms. – user3818701

ответ

0

Предполагая, что WPF, просто хлопнуть меню тот выше его шире и добавить пункты меню

+0

Я использую WinForms, теперь WPF. – user3818701

+0

Затем используйте вертикальные вкладки, такие как p.s.w.g. сказал – Steve

1

Вы можете Creat управления пользовательского пользователя, унаследованных из Tab Control.

для Windows Forms, следуйте ниже шагов:

  1. Щелкните правой кнопкой мыши Project -> Add New Item -> Управление учетными (C#)
  2. Наследовать от TabControl и писать ниже кода в конструктор по умолчанию 3 Override OnPaint Метод вручную Вкладка «Управление вкладкой»
  3. Сохранить это
  4. Добавьте его в свою форму из панели инструментов.
  5. Set Dock Property для заполнения и выравнивание недвижимости налево контроля
  6. Добавить дополнительные вкладки

Надеется, что это помогает!

class CustomControl : TabControl 
    { 
     public CustomControl() 
     { 
      SetStyle(ControlStyles.AllPaintingInWmPaint , true); 
      SetStyle(ControlStyles.OptimizedDoubleBuffer , true); 
      SetStyle(ControlStyles.ResizeRedraw, true); 
      SetStyle(ControlStyles.UserPaint, true); 

      DoubleBuffered = true; 
      SizeMode = TabSizeMode.Fixed; 
      ItemSize = new System.Drawing.Size(30, 120); 

     } 


     protected override void OnPaint(PaintEventArgs e) 
     { 
     var B = new Bitmap(Width, Height); 
     var G = (Graphics)Graphics.FromImage(B); 
     G.Clear(Color.Gainsboro); 

      for (int i = 0; i < TabCount -1; i++) 
      { 
      var TabRectangle = (Rectangle)GetTabRect(i); 

      if (i == SelectedIndex) 
      { 
       G.FillRectangle(Brushes.Navy, TabRectangle); 
      } 
      else 
      { 

       G.FillRectangle(Brushes.BlueViolet, TabRectangle); 


      } 
      G.DrawString(TabPages[i].Text, Font, Brushes.White, TabRectangle, new StringFormat { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center }); 
      TabPages[i].Font = new Font(TabPages[i].Font, FontStyle.Strikeout); 

     } 

     e.Graphics.DrawImage((Image)B.Clone(),0,0); 
     G.Dispose(); 
     B.Dispose(); 

     base.OnPaint(e); 

     } 

enter image description here

enter image description here

Счастливый кодирования!

Смежные вопросы