2012-03-08 3 views
1

Я пытаюсь создать приложение, похожее на боковую панель Windows Vista. Существует API, который позволяет устанавливать панели инструментов на экран (AppBar), но это не совсем то, что я ищу.Windows Vista Sidebar Equivalent

Как я могу прикрепить форму к рабочему столу и прикрепить ее к боковой стороне экрана, но не препятствуя перекрытию других окон?

+0

Для этого требуется постоянная проверка, чтобы окна были на переднем плане. –

+1

Просто измените свойства для окна. TopMost, CanResize и установите его без окна. Затем вы можете просто изменить положение окна вправо справа от экрана и высоту экрана, принять во внимание панель задач и настроить. –

+0

Не должно быть решения для использования AppBar для стыковки, но без перекрытия предотвращения? – SharpAffair

ответ

1

Со всеми из следующих вариантов вы получаете боковую панель Двойник как (ниже код для окна WPF):

//width of the sidebar 
Width = 300; 
//height (remember to add a reference to the System.Windows.Forms dll) 
Height = System.Windows.Forms.Screen.PrimaryScreen.WorkingArea.Height; 
//no window style means no border 
WindowStyle = WindowStyle.None; 
//not resizable 
ResizeMode = ResizeMode.NoResize; 
//allow a transparent sidebar 
AllowsTransparency = true; 
//change the color 
Background = new SolidColorBrush(Colors.CadetBlue); 
//set the opacity (how much transparent) 
Opacity = 0.5d; 
//offset from the top 
Top = 0; 
//offset from the left (calculated so it shows on the right side) 
Left = SystemParameters.PrimaryScreenWidth - (double)GetValue(WidthProperty); 
//set it the topmost window 
Topmost = true; 
//hide the icon from the taskbar 
ShowInTaskbar = false; 

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

Update:

Вот подобное решение, когда вы используете WindowsForms, Altough с WPF у вас есть гораздо больше возможностей! Различия незначительны, все объясняет сам. Последняя строка, которую я добавил, скрывает значок панели задач окна. Не размещайте код в конструкторе Формы, а в событии Load, иначе Location будет неправильным. В WPF это не имеет значения.

Width = 300; 
Height = Screen.PrimaryScreen.Bounds.Height; 
FormBorderStyle = FormBorderStyle.None; 
BackColor = Color.CadetBlue; 
Opacity = 0.5d; 
Location = new Point(Screen.PrimaryScreen.WorkingArea.Width - Width, 0); 
TopMost = true; 
ShowInTaskbar = false; 
+0

Форма Windows не имеет свойства Background. Это звучит как WPF. Кроме того, код кажется непоследовательным. – SharpAffair

+1

Могу ли я спросить, что мешает вам использовать WPF, чем WinForms? –

+0

См. Мой обновленный ответ для решения WinForms. @SandeepBansal: Мне было интересно то же самое! : D – Abbas

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