#009 Мощь WindowsForms и WPF

Автор: Topol Воскресенье, Май 6th, 2012 Нет комментариев

Рубрика: Операционные системы

В настоящий момент большое число пользователей обеспокоено возможностями библиотеки .NET 3.0 с точки зрения функциональности кода. Да, мы можем создавать великолепные интерфейсы, но что делать с функциональностью? Не секрет, что наборы классов .NET 3.0 в некоторых случаях облегчают работу программиста, а в некоторых — затрудняют. Многие пользователи считают, что последних случаев больше. Именно поэтому я посвящаю эту и следующие две статьи вопросам взаимодействия .NET 2.0 и .NET 3.0 . Я постараюсь разрушить эти предубеждения у пользователей сайта www.thevista.ru . Актуально ли это на настоящий момент? Да — до сих пор на форумах msdn  регулярно появляются вопросы типа «А где же мощь WindowsForms?» (читай .NET  2.0). 

В нашем сегодняшнем приложении на базе WPF  мы применим код из .NET 2.0 . Вы должны уяснить, что .NET 3.0 полностью базируется на 2-й версии классов и нет практически никаких ограничений на их использование. Именно поэтому это возможно.

Создадим новое приложение типа WinFX Windows Application и назовем его «MyInfoWindow». Я хочу 1) создать некое информационное окно 2) которое будет появляться в нижнем правом углу экрана. Для реализации первого пункта воспользуемся WPF. Отредактируйте XAML-код вашего окна:

Код:
<Window x:Class=»Window1″
xmlns=»http://schemas.microsoft.com/winfx/2006/xaml/presentation»
xmlns:x=»http://schemas.microsoft.com/winfx/2006/xaml»
Title=»Информация» Height=»100″ Width=»300″
Background =»Gold»
>
<Grid>
<Label FontFamily =»Arial» FontSize =»15″ Foreground =»White»
Content =»Читайте новости на www.thevista.ru»
HorizontalAlignment =»Center» VerticalAlignment =»Center»
Name=»MyText» Width =»260″>

<Label.Triggers>
<EventTrigger RoutedEvent=»Label.Loaded»>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation
Storyboard.TargetName=»MyText»
Storyboard.TargetProperty=»(Label.Width)»
From=»0″ To=»260″ Duration=»0:0:2″
AutoReverse=»False»/>

</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Label.Triggers>

</Label>
</Grid>
</Window>

Все что мы сделали, это немного изменили свойства окна, добавили надпись типа Label и применили к ней несложную анимацию — мы все-таки пишем на WPF! Все примененные методы мы уже неоднократно обсуждали в предыдущих статьях, поэтому я оставлю их без комментариев.
Если бы мы писали обычное .NET 2.0 приложение, то для реализации второго пункта плана мы бы воспользовались таким кодом, размещенным например в методе Form_Load:

Код:
Dim desktop As Screen = Screen.PrimaryScreen
Location = New Point(desktop.WorkingArea.Width — Width — 10,  _
desktop.WorkingArea.Height — Height — 10)

Как применить этот код в нашем приложении? Очень просто. Скопируйте и вставьте его в конструктор NEW() нашей формы, вот так:

Код:
Public Sub New()
InitializeComponent()

Dim desktop As Screen = Screen.PrimaryScreen
Location = New Point(desktop.WorkingArea.Width — Width — 10, _
desktop.WorkingArea.Height — Height — 10)

End Sub

В данный момент, вы не сможете запустить программу, так как мы не подключили необходимые библиотеки. Чтобы это сделать, воспользуйтесь командой меню Project — > MyInfoMenu Properties в окне Visual Studio 2005, чтобы отредактировать свойства проекта. Перейдите на вкладку References:

Нажмите кнопку Add чтобы добавить ссылки на нужные нам библиотеки System.Windows.Forms.dll и System.Drawing.dll

Теперь добавьте ссылки на эти библиотеки перед описанием класса окна:

Код:
Imports System.Windows.Forms ‘Для работы Screen в конструкторе
Imports System.Drawing       ’Для работы desktop.WorkingArea

Partial Public Class Window1

Все, что осталось сделать это немного изменить код конструктора NEW () чтобы он соответствовал нужным требованиям. Например мы можем изменить местоположение окна WPF только установив его свойству WindowStartupLocation значение Manual
Наш обновленный конструктор выглядит так:

Код:
Public Sub New()
InitializeComponent()

Me.WindowStartupLocation = Windows.WindowStartupLocation.Manual

Dim desktop As Screen = Screen.PrimaryScreen
Dim location As Point = _
New Point(desktop.WorkingArea.Width — Width — 10, _
desktop.WorkingArea.Height — Height — 10)

Me.Top = location.Y
Me.Left = location.X
End Sub

Запускаем приложение и смотрим на результат:

Окно расположено в правом нижнем углу экрана!
Мы воспользовались классами .NET 2.0 чтобы выполнить перемещение окна!
В конце статьи традиционный полный листинг программы.

XAML-листинг:

Код:
<Window x:Class=»Window1″
xmlns=»http://schemas.microsoft.com/winfx/2006/xaml/presentation»
xmlns:x=»http://schemas.microsoft.com/winfx/2006/xaml»
Title=»Информация» Height=»100″ Width=»300″
Background =»Gold»
>
<Grid>
<Label FontFamily =»Arial» FontSize =»15″ Foreground =»White»
Content =»Читайте новости на www.thevista.ru»
HorizontalAlignment =»Center» VerticalAlignment =»Center»
Name=»MyText» Width =»260″>
<Label.Triggers>
<EventTrigger RoutedEvent=»Label.Loaded»>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation
Storyboard.TargetName=»MyText»
Storyboard.TargetProperty=»(Label.Width)»
From=»0″ To=»260″ Duration=»0:0:2″
AutoReverse=»False»/>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Label.Triggers>
</Label>
</Grid>
</Window>

VB-листинг:

Код:
Imports System.Windows.Forms ‘Для работы Screen в конструкторе
Imports System.Drawing       ’Для работы desktop.WorkingArea

Partial Public Class Window1
Inherits Window

Public Sub New()
InitializeComponent()

Me.WindowStartupLocation = Windows.WindowStartupLocation.Manual

Dim desktop As Screen = Screen.PrimaryScreen
Dim location As Point = _
New Point(desktop.WorkingArea.Width — Width — 10, _
desktop.WorkingArea.Height — Height — 10)

Me.Top = location.Y
Me.Left = location.X
End Sub

End Class

 

Источник: thevista.ru

Оставить комментарий

Чтобы оставлять комментарии Вы должны быть авторизованы.

Похожие посты