Файл: Справочник для опытных и как пособие для начинающих программистов. Компактдиск содержит исходные коды примеров из книги.doc

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 11.01.2024

Просмотров: 917

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.


textBlockl.FontSize = 20;

// textBlock1.Background = Brushes .Gray;

// Создаем горизонтальный линейный градиент

LinearGradientBrush Градиент = new LinearGradientBrush();

// Задаем область для закрашивания линейным градиентом:

Градиент.StartPoint = new Point(0, 0.5);

Градиент.EndPoint = new Point(1, 0.5);

// Четыре точки t=0.0; t=0.25; t=0.75 и t=1.0

// образуют три подобласти с переходом цвета

//от желтого к красному, далее синему и затем зеленому

Градиент.GradientStops.Add(new GradientStop(Colors.Yellow, 0.0));

Градиент.GradientStops.Add(new GradientStop(Colors.Red, 0.25));

Градиент.GradientStops.Add(new GradientStop(Colors.Blue, 0.75));

Градиент.GradientStops.Add(new GradientStop)Colors.LimeGreen, 1.0));

// Закрашиваем текст горизонтальным линейным градиентом:

textBlock1.Foreground = Градиент;

}

}

}

Как видно из программного кода, сразу после вызова процедуры InitiaiizeConponent задаем шуточный афоризм Игоря Губермана для свойства тек­стового блока TextBlock1.Text. Далее создаем горизонтальный линейный градиент между четырех точек, соответственно желтого, красного, синего и зеленого цветов. Градиент обеспечивает постепенный переход от одного цвета к другому (рис. 16.4). Убедиться в работоспособности программы можно, открыв решение в папке WpfGradientText.



Рис. 16.4. Закрашивание текстового блока горизональным линейным градинентом

Пример 123. Проверка орфографии в элементе управления редактирования текста

Если читатель помнит, в примере 54 главы 9 мы рассматривали возможность проверки орфографии (правописания) в текстовом поле и при этом использовали объектную библиотеку MS Word. Платформа .NET Framework 4 WPF позволяет обойтись без обращения к библиотеке MS Word, поскольку содержит в себе возможность проверки орфографии в редактируемом элементе управления, таком как TextBox или RichTextBox. При этом варианты проверки орфографии отображают­ся в виде контекстного меню. Например, когда пользователь щелкает правой кноп­кой мыши по слову с ошибкой, он получает набор орфографических вариантов или вариант Ignore Аll(Пропустить все).

Создадим автономное настольное WPF-приложение, включающее в себе текстовое поле с возможностью проверки орфографии. Для этого запустим Visual Studio 2010, выберем среди шаблонов Windows шаблон WPF Application, т. е. автономное WPF-приложение, и назовем его WpfTextBoxOpфoгpaфия. Далее, перей­дя на вкладку дизайна MainWindows.xaml, на панели элементов Toolbox дважды щелкнем по элементу
TextBox. Его расположение, размеры и другие свойства будем задавать в программном коде, поэтому сразу перейдем на вкладку кода MainWindows.xaml.cs (листинг 16.6).

Листинг 16.6. Включение проверки орфографии в элементе управления редактирования текста TextBox

// Автономное WPF-приложение содержит элемент управления TextBox с включенной проверкой правописания

// англоязычного текста. Технология .NET Framework 4 WPF обеспечивает только английский, французский, немецкий

// и испанский словари. Чтобы появилась возможность проверять русскоязычный текст, следует в коллекцию

// CustomDictionaries добавить пользовательский словарь русскоязычной лексики *.lex

using System;

using System.Windows;

using System.Windows.Controls;

// Другие директивы using удалены, поскольку они не используются в данной программе

namespace WpfTextBoxOpфoгpaфия

{

///

/// Interaction logic for MainWindow.xaml

///< / summary>

public partial class MainWindow : Window

{

publiс MainWindow()

{
InitializeComponent();

this.Title = "Проверка орфографии";

// Размеры окна:

this.Width = 300; this.Height = 150;

// Расстояния от краев текстового поля до краев окна:

textBox1.Margin = new Thickness(10, 10, 0, 0);

// Размеры текстового поля:

textBox1.Width = 270; textBox1.Height = 95; textBox1.Focus();

// Включить проверку орфографии:

textBox1.SpellCheck.IsEnabled = true;

// Можно включить проверку орфографии также таким образом:

// SpellCheck.SetIsEnabled(textBoxl, true);

// Разрешить перенос слов на другую строку:

textBox1.TextWrapping = TextWrapping.Wrap;

// При нажатии клавиши разрешить переход на следующую строку:

textBox1.AcceptsReturn = true;

// Коллекция словарей для проверки орфографии:

System.Collections.IList Словари = SpellCheck.

GetCustomDictionaries(textBoxl);

// Добавить в коллекцию словарей словарь, созданный нами:

Словари.Add(new Uri(@"С://dic.lex"));

// Software is like sex, it's better when it's free

}

}

}

Как видно из текста программы, чтобы включить средство проверки правопи­сания, свойству SpellCheck.IsEnabled присвоим значение true в элементе управ­ления редактирования текста. При включении этого средства проверки орфографии слова с ошибками подчеркиваются красной волнистой линией. Технология .NET Framework 4 WPF обеспечивает только английский, французский, немецкий и ис­панский словари.



Рис. 16.5. Пользовательский словарь разрешенной лексики

Чтобы появилась возможность проверять русскоязычный текст, следует в кол­лекцию CustomDictionaries добавить пользовательский словарь русскоязычной лекcики. Пользовательские словари используют файлы лексики, которые представляют собой текстовые файлы с расширением lex. Автор не нашел такого готового файла, возможно, читатель найдет его самостоятельно. Текстовый lex-файл лексики имеет следующую структуру (рис. 16.5).

В этом файле показаны первые несколько строк файла лексики. Каждая строка файла лексики содержит отдельное слово, утвержденное для проверки орфогра­фии. Первая строка файла может указывать код языка и региональных параметров (LCTD), к которым применяется словарь. Если языковой стандарт не указан, сло­варь применяется для всех языков. Как видно, файл diс.lex содержит фамилию автора на английском языке, поэтому при проверке орфографии слово "Ziborov" не было подчеркнуто красной волнистой линией (рис. 16.6), а английское слово "free" написано с ошибкой, контекстное меню приводит варианты проверки орфографии.



Рис. 16.6. Слова с ошибками подчеркиваются красной волнистой линией

Убедиться в работоспособности программы можно, открыв решение в папке WpfTextBoxOpфoгpaфия.

Пример 124. Программирование WPF-проигрывателя. Компоновка элементов управления с помощью панели StackPanel

Среди элементов управления WPF на панели Toolbox можно найти элемент воспроизведения файлов мультимедиа MediaElement. На основе этого элемента в данном примере создадим автономное настольное WPF-приложение, реализующее проигрыватель мультимедиа с возможностями включения паузы, остановки и регулировки уровня громкости.

Для этой цели запустим среду Visual С#2010, выберем среди шаблонов Windows шаблон WPF Application, т. е. автономное WPF-приложение, и назовем eго WpfПроигрыватель. Далее перейдем на вкладку дизайна MainWindows.xaml. В этом примере для компоновки элементов управления мы будем использовать элемент StackPanel. Элемент StackPanel используется для расположения элемен­тов по вертикали (по умолчинию) или горизонтали. Эти элементы, перенесенные нa вкладку дизайна после "стек-панели", называют дочерними по отношению к элементу StackPanel. Поэтому переключим вкладку MainWindows.xaml в состояние Design, а затем на панели элементов Toolbox (эту панель можно вызвать, как обычно, комбинацией клавиш <Ctrl>+<Alt>+<X>) дважды щелкнем на элементе StackPanel. Далее на пенели Toolbox дважды щелкнем последовательно на эле­ментах MediaElement и StackPanel, т. е. вторая "стек-панель" будет вложена в первую. Иными словами, первый элемент StackPanel будет содержать в себе (будет иметь в качестве дочерних) элементы MediaElement и вторую StackPanel. Эти дочерние элементы будут располагаться по вертикали. Теперь, чтобы для второй "стек-панели" перенести три кнопки (Play, Pause и Stop), текстовый блок и эле­мент выбора из диапазона значений Slider (так называемый "ползунок"), дважды целкнем по ним последовательно на пенели Toolbox. Мы хотим расположить их горизонтально (см. рис. 16.7), но об этом и о многом другом мы позаботимся в программном коде. Хотя часто это делают на языке XAML (это оказывается более удобным), но не забываем, что мы пишем книгу о языке С#. Перед тем, как перейти нa вкладку программного кода, посмотрим содержимое файла разметки МainWindows.xaml (листинг 16.7).


Листинг 16.7. Разметка дизайна интерфейса WPF-проигрывателя

Проигрыватель.MainWindow"

xmlns="http://schemas.microsoft.com/winfx/2 00 6/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

Title="MainWindow" Height="350" Width="525">



























Из XAML-разметки видно, что внешний элемент StackPanel включает в себя элементы MediaElement и StackPanel, и эта вторая StackPanel в свою очередь со­держит три кнопки Button, текстовый блок TextBlock и "ползунок" Slider.

Теперь перейдем на вкладку MainWindows.xaml.cs и напишем программный код, представленный в листинге 16.8. При этом не забываем, что для каждого программируемого события, например button1_ciick, следует его создать, скажем, используя окно Properties. При этом эти события отобразяться в XAML-разметке.

Листинг 16.8. Использование элемента управления MediaElementпри граммировании WFF-проигрывателя

// WPF-проигрыватель, позволяющий воспроизводить мультимедиа, включать паузу, остановку, а также настраивать

// громкость с помощью "ползунка"

using System;

using System. Windows;

using System.Windows .Controls;

using System. Windows .Media;

// Другие директивы using удалены, поскольку они не используются в данной программе

namespace WpfПpoигpывaтeль

{

///

/// Interaction logic for MainWindow.xaml

///


public partial class MainWindow : Window

{

public MainWindow()

{

InitializeComponent();

// Строка заголовка Web-страницы:

this.Title = "Мадиа проигрыватель";

this.Width = 430; this.Height = 430;

// Компонуем элементы управления с помощью панели StackPanel:

stackPanel1.Width = 410; stackPanel1.Height = 400;

stackPanel2.Width = 410; stackPanel2.Height = 50;

// При отладке удобно задать фоновый цвет панели:

// stackPanel1-Background = Brushes.LightGray;

stackPanel1.Orientation = Orientation.Vertical;

stackPanel2.Orientation = Orientation.Horizontal;

button1. Focus () ; button1.Content = " Play";

button2.Content = "Pause"; button3.Content = "Stop";

// Расстояния от краев текстового блока до краев окна:

textBlock1.Margin = new Thickness(10, 13, 10, 0);

textBlock1.Text = "Громкость:"; textBlock1.FontSize = 12;

// Элемент выбора из диапазона значений "Ползунок" (Slider):

Slider1.Minimum = 0; slider1.Maximum = 1; slider1.Value = 0.5;

// MediaElement представляет элемент, содержащий аудио и/или видео:


mediaElement1.Source = new Uri(@"С://ВысшийПилотаж.mр4");

// или mediaElement1.Source = new Uri(@"C:\ВысшийПилотаж.mр4");

mediaElement1.Width = 400; mediaElement1.Height = 340;

mediaElement1.HorizontalAlignment = System. Windows.HorizontalAlignment.Left;

// Manual - состояние, используемое для управления элементом

// MediaElement вручную, при этом можно использовать интерактивные

// методы, такие как Play и Pause:

mediaElement1.LoadedBehavior = MediaState.Manual;

mediaElement1.UnloadedBehavior = MediaState.Stop;

mediaElement1.Stretch = Stretch.Fill;

}

private void button1_Click(object sender, RoutedEventArgs e)

{ // Чтобы начать просмотр ролика, следует подать команду Play.

// Если MediaElement пребывает в состоянии Pause, то команда Play

// продолжит воспроизведение ролика с текущего положения.

// Метод Play начинает воспроизведение файла мультимедиа:

mediaElement1.Play();

// Задаем громкость воспроизведения файла мультимедиа в

// зависимости от состояния элемента "ползунок":

mediaElement1.Volume = (double)slider1.Value;

}

private void mediaElement1_MediaEnded(object sender, RoutedEventArgs e)

{ // При завершении воспроизведения мультимедийного файла переводим

// элемент MediaElement в состояние Stop:

mediaElement1.Stop();

}

private void slider1_ValueChanged(object sender, RoutedPropertyChangedEventArgs e)

{ // Если значение свойства Value элемента "ползунок" изменяется,

//то изменяем громкость вопроизведения мультимедиа Volume:

mediaElement1.Volume = (double)slider1.Value;

}

private void button2_Click(object sender, RoutedEventArgs e)

{ // Приостанавливаем воспроизведение файла мультимедиа:

mediaElement1.Pause();

}

private void button3_Click(object sender, RoutedEventArgs e)

{ // Останавливаем и возвращаем воспроизведение мультмедийного файла на начало: mediaElementl.Stop();

}

}

}

Как видно из программного кода, сразу после завершения процедуры InitializeComponent мы задаем размеры окна и размеры обоих элементов StackPanel и указываем, как будут ориентированы дочерние к ним элементы. Далее после очевидных установок переводим элемент MediaElement в "ручное" управление Manual, что позволит использовать интерактивные методы Play, Pause и Stop. Затем обрабатываем каждое из событий нажатия кнопок, регулировки звука и завершения воспроизведения. Фрагмент работы программы представлен на рис. 16.7.



Рис. 16.7. Интерфейс созданного WPF-проигрывателя

Убедиться в работоспособности программы можно, открыв решение в папке WPFПроигрыватель.

Пример 125. Наложение текста на видео

Вспомним видеоролик из предыдущего примера. Тихая морская гавань, разме­ренная, неторопливая летняя атмосфера. И вдруг в эту умиротворенность врывает­ся рев самолета. Мы видим очень быстро летящий военный истребитель, неведомо как залетевший в эту мирную спящую гавань. Его крылья вот-вот коснутся воды. Будем считать, что этот ролик — начало большого фильма. Наша задача — нало­жить на это видео одно слово огромными буквами на весь экран: "ПОЛЕТ".

Для реализации поставленной задачи запустим Visual С#2010, выберем среди шаб­лонов Windows шаблон WPF Application, т. е. автономное WPF-приложение, и назо­вем его WpfTeкстНаВидео. Далее перейдем на вкладку дизайна MainWindows.xainl. Здесь в панели Toolbox найдем элемент управления MediaElement и двойным щелч­ком перенесем его на вкладку дизайна проектируемого окна. Размеры элемента и про­чие параметры будем устанавливать в программном коде. Таким образом, перейдем на вкладку MainWindows.xaml.cs и введем текст, представленный в листинге 16.9.

Листинг 16.9. Использование элемента управления MediaElementпри программировании WPF-проигрывателя

// Программа воспроизводит видеоролик с помощью элемента MediaElement

//и накладывает на него форматированный текст "ПОЛЕТ"

using System;

using System.Windows;

using System.Windows.Media;

// Другие директивы using удалены, поскольку они не используются в данной программе
namespace WpfТекстНаВидео
{

///

/// Interaction logic for MainWindow.xaml

///


public partial class MainWindow : Window

{

public MainWindow()

{

InitializeComponent();

this.Title = "Высший пилотаж";

// Размеры окна:

this.Width = 420; this.Height = 355;

mediaElement1.Width = 400; mediaElement1.Height = 300;

mediaElement1.Source = new Uri(@"C://ВысшийПилотаж.mр4");

// или mediaElementl.Source = new Uri(@"C:\ВысшийЛилотаж.mр4");

// Создаем форматированный текст:

FormattedText ФорматированныйТекст = new FormattedText("ПОЛЕТ", System.Globalization.Culturelnfо.CurrentCulture, FlowDirection.LeftToRight,

new Typeface(this.FontFamily, FontStyles.Normal,

FontWeights.ExtraBold, FontStretches.Normal), 111, Brushes.Red);

// Создаем объект класса Geometry для отрисовки

// форматированного текста

Geometry ГеометрическаяФигура = new PathGeometry();

// Строим геометрическую фигуру с отрисованным форматированным текстом:

ГеометрическаяФигура = ФорматированныйТекст.BuildGeometry(new Point(0, -28));

// Масштабируем геометрическую фигуру, растягивая ее по вертикали:

ScaleTransform Масштаб = new ScaleTransform();

// Указываем коэффициент растяжения по вертикали:

Масштаб.ScaleY = 3.55;

ГеометрическаяФигура.Transform = Масштаб;

// Задаем геометрию в пределах контура медиаэлемента:

mediaElement1.Clip = ГеометрическаяФигура;

}

}

}



Рис. 16.8. Наложение текста на видео в WPF-приложении

Как видно из текста программы, после выполнения процедуры InitializeComponent задаем очевидные параметры для элемента воспроизведения файлов мультимедиа: его размеры и путь к медиафайлу. Далее создаем форматиро­ванный текст класса FormattedText. Объекты этого класса предназначены для ри­сования многострочного текста, в котором каждый символ можно форматировать отдельно. Объект FormattedText считается низкоуровневым, поскольку обрабаты­вает текст как графические элементы. Технология WPF применяет визуализацию на субпиксельном уровне, которая позволяет отображать текст с повышенной точ­ностью формы, выравнивая символы до дробной части пиксела. Далее создаем объект класса Geometry для отрисовки форматированного текста, затем, масштаби­руя его, определяем место (Clip) объекта в пределах контура медиаэлемента. Кста­ти, свойство Clip часто используется для отсечения ("обрезания") от построенной геометрической фигуры некоторой области, предназначенной для визуализации. Фрагмент работы программы показан на рис. 16.8. Убедиться в работоспособности программы можно, открыв решение в папке WpfТекстНаВидео.

Пример 126. Переходы в WPF-приложениях

Приложения WPF часто состоят из набора страниц. По мере работы пользова­теля с приложением он переходит со страницы на страницу, как в Web-приложении. Windows Presentation Foundation поддерживает переходы в стиле браузера, которые могут использоваться в приложениях обоих типов: автономных приложениях и ХВАР-приложениях Web-браузера. Для демонстрации возможно­сти перехода от страницы к странице создадим WPF-приложние, выполняемое в браузере. Это приложение будет содержать в себе две Web-страницы. Первая Web-страница имеет кнопку для перехода на вторую Web-страницу и гиперссылку для перехода на почтовый сервер www.ukr.net. Вторая Web-страница содержит только гиперссылку для перехода назад на первую Web-страницу. Таким образом, мы продемонстрируем возможность перехода с одной страницы на другую с помощью oбъекта NavigationService и гиперссылки Hyperlink.

Итак, запустим Visual Studio 2010, закажем новый проект шаблона WPF Browser Application С# (из инсталлированных шаблонов Windows), назовем новый проект WpfXpabnepexoды. После щелчка на кнопке ОК попадем на вкладку Рage1.xaml. Вызвав панель элементов Toolbox (например, с помощью комбинации клавиш <Ctrl>+<Alt>+<X>), дважды щелкнем на элементе Button, а затем на элементе TextBlock. Таким образом, на вкладке дизайна Page1.xaml появятся один элемент над другим: командная кнопка и текстовый блок. На вкладке программного кода Page1.xaml.cs введем программный код, представленный в листинге 16.10.

Листинг 16.10. Организация переходов на другие ресурсы, страница 1

// Данное WPF-приложение содержит в себе две Web-страницы: Page1.xaml и Page2.xaml. На первой мы разместили

// командную кнопку и текстовый блок. В программном коде первой страницы мы создали объект Hyperlink,

// чтобы обеспечить переход на почтовый сервер www.ukr.net. Щелчок мышью на кнопке реализует переход

// на вторую Web-страницу Page2.xaml. Возврат со второй страницы на первую организован также с помощью

// гиперссылки Hyperlink

using System;

using System.Windows;

using System.Windows.Controls;

using System.Windows .Documents ;

// Другие директивы using удалены, поскольку они не используются в данной программе

namespace WpfXpabnepexoды

{

///

/// Interaction logic for Page1.xaml

///


public partial class Page1: Page

{

public Page1()

{

InitializeComponent();

this.WindowTitle = "Первая WPF-страница";

button1.Width = 170; button1.Focus();

button1.Content = "Перейти на вторую страницу";

textBlock1.Text = "Перейти ";

// Создаем объект класса Hyperlink для размещения гиперссылки:

Hyperlink Ссылка = new Hyperlink();

// Задаем ссылку для перехода на нужный ресурс:

Ссылка.NavigateUri = new Uri("http://www.ukr.net");

// Задаем текст, отображаемый в элементе управления Hyperlink:

Ссылка.Inlines.Add("на почтовый сервер www.ukr.net");

// Добавляем ссылку в текстовый блок:

textBlock1.Inlines.Add(Ссылка);

}

private void button1_Click(object sender, RoutedEventArgs e)

{ // Объект NavigationService обеспечивает навигацию на другой ресурс:

this.NavigationService.Navigate(new Uri("Page2.xaml", I UriKind.Relative));

}

}

}

Текст программы очевиден из его содержания и приведенных комментариев. Единственное, поясним Hyperlink. Такого элемента нет в панели Toolbox, по­скольку он создается внутри других элементов, например TextBlock. Поэтому мы создали объект класса Hyperlink в программном коде, задали его некоторые пара­метры и добавили к элементу TextBlock командой Inlines.Add. Фрагмент работы Web-страницы Page1xaml показан на рис. 16.9.



Рис. 16.9. Интерфейс первой Web-страницы WPF-приложения

Теперь создадим вторую Web-страницу, на которую будем переходить, щелк­нув по командной кнопке. Для этого в пункте меню Project выберем команду Add New Item и в появившемся окне дважды щелкнем на шаблоне Page(WPF). На вкладку Page2.xaml перенесем из панели элементов Toolbox метку Label и тексто­вый блок TextBlock. Теперь перейдем на вкладку программного кода Page2.xaml.cs и введем текст, представленный в листинге 16.11.

Листинг 16.11. Организация переходов на двугие ресурсы, страница 2

using System;

using System.Windows.Controls;

using System.Windows.Documents;

// Другие директивы using удалены, поскольку они не используются в данной программе

namespace WpfXpabnepexoды

{

///

/// Interaction logic for Page2.xaml

///


public partial class Page2 : Page

{

public Page2()

{

InitializeComponent();

this.WindowTitle = "Вторая WPF-страница";

label1.Content = "Вы першли на вторую страницу";

textBlock1.Text = "Щелкните ";

// Создаем объект класса Hyperlink для размещения гиперссылки:

Hyperlink Ссылка = new Hyperlink();

// Задаем ссылку для перехода на нужный ресурс:

Ссылка.NavigateUri = new Uri("Pagel.xaml", UriKind.Relative);

// Задаем текст, отображаемый в элементе управления Hyperlink:

Ссылка.Inlines.Add("здесь");

// Добавляем ссылку в текстовый блок:

textBlock1.Inlines.Add(Ссылка) ;

// Добавляем текст в текстовый блок:

textBlock1.Inlines.Add(" для перехода назад на первую страницу.");

}

}

}

Как видно из текста программы, использованный подход аналогичен программной поддержке для первой Web-страницы. Фрагмент работы второй Web-страницы Page2.xaml показан на рис. 16.10.




Рис. 16.10. Интерфейс второй Web-страницы WPF-приложения

Убедиться в работоспособности программы можно, открыв решение в папке WpfXpabПepexoды.

Желаю вам, уважаемые читатели, получить не только удовольствие от процесса программирования на Visual С#, но и зарабатывать достойные вас деньги.

Извините, все.

Приложение Описание компакт-диска Таблица П1. Содержимое компакт-диска

Название папки

Описание программы

Номер примера

ComboBox_Calc

Программа, реализующая функции калькулятора. Здесь для отображения вариантов выбора арифметических действий используется комбинированный список ComboBox

9

Unico

Программа демонстрирует возможность вывода в текстовую метку, а также в диалоговое окно MessageBox греческих букв. Программа приглашает пользователя ввести радиус R, чтобы вычислить длину окружности

10

Сумма

Консольное приложение складывает два числа и выводит сумму на консоль

11

ТаблКорней

Консольное приложение задает цвета и заголовок консоли, а затем выводит таблицу извлечения квадратного корня от нуля до десяти

12

ConsoleMessageBox

Консольное приложение выводит в окно MessageBox текущую дату и время в различных форматах, используя String.Format

13

CcылкaHaVisualBasic

В данном консольном приложении Visual С# используем функции Visual Basic. Приложение приглашает пользователя ввести два числа, анализирует, числа ли ввел пользователь, и выводит результат суммирования на экран. При этом используются функции Visual Basic: inputBox, isNumeric (для контроля, число ли ввел пользователь) и MsgBox

14

Monitoring

Программа отображает координаты курсора мыши относительно экрана и элемента управления. Программа содержит форму, список элементов ListBox и два текстовых поля. Программа заполняет список ListBox данными о местоположении и изменении положения курсора мыши. Кроме того, в текстовых полях отображаются координаты положения курсора мыши относительно экрана и элемента управления ListBox

15

NewButton

Программа создает командную кнопку в форме "программным" способом, т. е. с помощью написания непосредственно программного кода, не используя при этом панель элементов управления Toolbox. Программа задает свойства кнопки: ее видимость, размеры, положение, надпись на кнопке и подключает событие "щелчок на кнопке"

16