2013-04-26 9 views
2

У меня есть объект ToolStrip, который содержит несколько ToolStripButtons. Я хочу добавить вертикальную кнопку в левой части этого объекта. Но так как ToolStrip состыкован влево, я не могу ничего добавить с левой стороны.Добавить кнопку слева от инструментальной панели

Есть ли способ, которым это можно сделать? Благодаря!

Примечание: Я пытаюсь добиться чего-то похожего на Visual Studio Toolbox, в котором, если я наводил курсор на кнопку, отображается ToolStrip, и если я оставлю ToolStrip, он скрывается. Если есть еще один способ сделать это, пожалуйста, помогите.

Любые советы были бы весьма полезными.

ответ

4

Надеясь, что правильно понял ваш вопрос, вы пытаетесь состыковать кнопку слева от элемента управления ToolStrip, как показано на рисунке ниже.

enter image description here

Для достижения этой цели необходимо сначала установить Dock свойство обоих элементов управления для Left

Чтобы иметь кнопки управления, как первый левый пристыкован управления, вы можете добиться этого с помощью Окно документа Окно, которое открывается с помощью меню Вид> Другое Windows> Очерк документа, а затем установите приоритет док-станции, перетащив кнопку под ToolStrip, как показано на изображении выше.

Для поддержки нескольких кнопок вы можете заменить одну кнопку в приведенном выше примере с помощью панели, содержащей необходимые кнопки.

Также, чтобы избежать повторного использования колеса, вы можете взглянуть на проект DockPanel Suite, который можно бесплатно загрузить на SourceForge.

EDIT: Как указано в комментарии.

Вы можете связать все кнопки, которые вы хотите, чтобы поддержать вертикальный текст в случае краски, как показано ниже

private void VerticalButtonTextEvent(object sender, PaintEventArgs e) 
    { 
     Button button = sender as Button; 
     if (button == null) return; 

     Graphics g = e.Graphics; 
     g.FillRectangle(SystemBrushes.Control, button.ClientRectangle); 
     using (Font f = new Font("Times New Roman", 8)) 
     { 
      SizeF szF = g.MeasureString(button.Text, f); 
      g.TranslateTransform(
       (float) ((Button) sender).ClientRectangle.Width/(float) 2 + szF.Height/(float) 2, 
       (float) ((Button) sender).ClientRectangle.Height/(float) 2 - 
       (float) szF.Width/(float) 2); 
      g.RotateTransform(90); 
      g.DrawString(button.Text, f, Brushes.Black, 0, 0); 
     } 
    } 
+0

+1 для документов окна Outline – andy

+0

@Romulus - Это работает отлично. Есть ли способ изменить текст на горизонтальный? Как вы можете видеть, название кнопки содержит каждую букву под предыдущей. –

+0

@ Энди: Спасибо :). –

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