Опрос
Вы участвуете в программе Windows Insider?
Популярные новости
Обсуждаемые новости

22.07.2006 04:02 | Raiker

В настоящий момент большое число пользователей обеспокоено возможностями библиотеки .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>

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

[code]Dim desktop As Screen = Screen.PrimaryScreen
Location = New Point(desktop.WorkingArea.Width - Width - 10, _
desktop.WorkingArea.Height - Height - 10)[/code]
Как применить этот код в нашем приложении? Очень просто. Скопируйте и вставьте его в конструктор NEW() нашей формы, вот так:

[code]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[/code]
В данный момент, вы не сможете запустить программу, так как мы не подключили необходимые библиотеки. Чтобы это сделать, воспользуйтесь командой меню Project - > MyInfoMenu Properties в окне Visual Studio 2005, чтобы отредактировать свойства проекта. Перейдите на вкладку References:



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

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

[code]Imports System.Windows.Forms 'Для работы Screen в конструкторе
Imports System.Drawing 'Для работы desktop.WorkingArea

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

[code]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[/code]
Запускаем приложение и смотрим на результат:



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

XAML-листинг:
[code]<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>[/code]
VB-листинг:
[code]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[/code]

Espoir, TheVista.ru Team
Июль, 2006

Комментарии

Не в сети

Напишите в примере код на Си Шарп пожалуйста

04.05.11 18:33
0
Для возможности комментировать войдите в 1 клик через

По теме

Акции MSFT
420.55 0.00
Акции торгуются с 17:30 до 00:00 по Москве
Все права принадлежат © ms insider @thevista.ru, 2022
Сайт является источником уникальной информации о семействе операционных систем Windows и других продуктах Microsoft. Перепечатка материалов возможна только с разрешения редакции.
Работает на WMS 2.34 (Страница создана за 0.199 секунд (Общее время SQL: 0.172 секунд - SQL запросов: 55 - Среднее время SQL: 0.00312 секунд))
Top.Mail.Ru