2012-01-14 3 views
3

То, что я пытаюсь создать, очень похоже на «Toolbox» в VS 2008 и VS 2010. Это будет с левой стороны моего родителя MDI и появится когда пользователь наводит курсор на него. Опять же, это похоже на VS Toolbox.C# способ реализовать вертикальную панель авто-скрытия

Мой вопрос - это лучший способ реализовать это? Имейте в виду, что я помещаю это в левую часть родителя MDI и использую VS 2008, C# и .NET 3.5. Кроме того, я планирую разместить TreeView внутри панели инструментов, поэтому все, что используется, должно поддерживать добавление объекта TreeView.

Спасибо!

+0

@Sam: см. Мой ответ для моего текущего решения. Я бы хотел, чтобы решение, которое, по возможности, медленно выплывало. У кого-нибудь есть такое решение? – CODe

ответ

2

Вертикальная панель автоматического скрытия от того, что я собрал в Интернете и путем тестирования, лучше всего реализовать с помощью объекта ToolStrip, прикрепленного слева в моем случае. Чтобы создать внешний вид объекта TreeView, добавьте ToolStripButton. Затем добавьте событие MouseHover в ToolStripButton, которое делает видимым объект Panel (который также состыкован влево). Очевидно, было бы лучше сделать объект Panel невидимым по умолчанию. Затем добавьте событие MouseLeave для панели, поэтому, когда пользователь покидает панель, панель снова становится невидимой или «всплывает» обратно.

Это не имеет приятного эффекта от нее, как в Visual Studio 2008/2010, но у него есть базовые функции, которые мне нужны.

Вот код событий MouseHover и MouseLeave. Очень просто.

private void openPanel1ToolStripButton_MouseHover(object sender, EventArgs e) 
    { 
     if(panel1.Visible == false) 
     { 
      panel1.Visible = true; 
     } 
    } 

    private void panel1_MouseLeave(object sender, EventArgs e) 
    { 
     if (panel2.Visible == true) 
     { 
      panel2.Visible = false; 
     } 
    } 
+2

Если вы не могли вставлять и вставлять, добавьте таймер, который будет работать в течение короткого времени. Когда вы сделаете панель видимой, установите ее ширину (Размер) на небольшое значение, а в каждом событии таймера установите ширину немного шире, пока она не достигнет полного размера. (что-то вроде интервала в 100 секунд, выполняющегося в течение одной секунды, поэтому он открывается в десять шагов, каждый раз показывая дополнительную десятую части финальной ширины, должен выглядеть нормально) –

+0

@ Джейсон: отличный совет, очень хорошая идея! – CODe

1

Посмотрите на DockPanel Suite на SourceForge. Я видел множество пользовательских элементов управления в Интернете, пытающихся имитировать панель инструментов VS, но никто не работает так хорошо, как это делает. Он также имеет высокий рейтинг пользователей.

+0

Большое спасибо, эта библиотека отлично выглядит. Я собираюсь использовать это в других проектах точно. К сожалению, мой работодатель просит, чтобы я использовал как можно меньше кода внешней библиотеки, поэтому мне нужно реализовать его самостоятельно. – CODe

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