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

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

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

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

Добавлен: 11.01.2024

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

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

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




Рис. 2.3. Вывод на консоль таблицы

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

Убедиться в работоспособности программы можно, открыв решение ТаблКор­ней.sin в папке ТаблКорней.

Пример 13. Вызов MessageBox.Showв консольном приложении. Формат даты и времени

Программирование консольного приложения напоминает период конца 1980-х го­дов, когда появились первые персональные компьютеры с очень слабой производительностью и небольшой памятью. Для вывода данных Visual С# имеет удобное средство MessageBox.show, и в консольном приложении его вызвать все-таки мож­но. Покажем на следующем примере, как практически это можно сделать.

Итак, в данном примере следует в консольном приложении вывести в окно MessageBox текущую дату и время в различных форматах, чтобы попутно проде­монстрировать читателю некоторые возможности форматирования строк с помо­щью метода string.Format. Запустим Visual Studio 2010, выберем шаблон кон­сольного приложения С#. Далее необходимо в проект добавить ссылку на библиотеку, содержащую объект MessageBox. Для этого в пункте меню Project вы­берем команду Add Reference, а на вкладке .NET дважды щелкнем на ссылке System.Windows.Forms. Теперь в окне Solution Explorer (Обозреватель решений), раскрывая пункт References (Ссылки), увидим добавленную в наш проект выбран­ную ссылку. В программном коде вставим строку using System.windows.Forms. Директива using используется для импортирования пространства имен, которое

содержит класс MessageBox (листинг 2.3).

Листинг 2.3. Вызов MessageBox. Show в консольном приложении

// Консольное приложение выводит в окно MessageBox текущую дату

// и время в различных форматах, используя String.Format using System;

using System. Windows . Forms ;

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

namespace ConsoleMessageBox

{

class Program

{

static void Main(string[] args)

{

string ДатаВремя = string.Format(

"(d) - это формат \"короткой\" даты: {0:d}\n" +

"(D) - это формат \"полной\" даты: {0:D}\n" +

"(t) - это формат \"короткого\" времени: {0:t}\n" +

" (Т) - это формат \"длинного\" времени: …{0:Т}\n" +

"(f) - выводится \"полная\" дата и \"короткое\" время: ……………..{0:f}\n" +

"(F) - выводится \"полная\" дата и \"длинное\" время:…………….. {0:F}\n" +


"(g) General - короткая дата и короткое время: ………………………….{0:g}\n" +

"(G) General - \"общий\" формат: ………………………………………………..{0:G}\n" +

"Пустой формат - такой же, как формат (G) …… {0)\n" +

"(М) - выводится только месяц и число: ………….{0:М}\n" +

"(U) Universal full date/time - время по Гринвичу…………………………..{0:U}\n" +

"(Y) - по этому формату выводится только год ……….{0:Y}\n",

DateTime.Now) ;

MessageBox.Show(ДатаВремя, "Время и дата в различных форматах");

}

}

}

Запустим наше приложение, нажав клавишу <F5>. В результате появится чер­ное окно консоли, а под ним — диалоговое окно MessageBox (рис. 2.4).

Теперь избавимся от мешающего нам черного окна консоли. Для этого в окне свойств проекта (Project | Properties) на вкладке Application в раскрывающемся списке Output type щелкнем на пункте Windows Application.

Убедиться в работоспособности программы можно, открыв соответствующее решение в папке ConsoleMessageBox.


Рис. 2.4. Вывод текущего времени и даты в различных форматах

Пример 14. Вызов функций Visual Basic из программы С#

Покажем, как можно воспользоваться в вашей Сопрограмме методами другой программной среды, в частности функциями Visual Basic. Решим следующую зада­чу. Программа приглашает пользователя ввести одно число, затем другое, анализи­рует, ввел ли пользователь именно числа, а не другие символы, и выводит резуль­тат суммирования в диалоговое окно. Программировать будем в консольном приложении С#, при этом воспользуемся функцией ввода InputBox, функцией вы­вода MsgBox, а также функцией IsNumeric, которая определяет, число ли подано на вход этой функции. Все эти три функции были еще в Visual Basic 6.0. Для решения этой задачи запустим Visual Studio, выберем проект шаблона кон­сольного приложения С#. Далее необходимо в проект добавить ссылку на библио­теку Microsoft.VisualBasic.dll. Для этого в пункте меню Project выберем команду Add Reference, а на вкладке .NET дважды щелкнем на ссылке Microsoft.VisualBasic. Теперь в окне Solution Explorer, раскрывая пункт References, увидим добавленную в наш проект выбранную ссылку. Затем перейдем на вкладку программного кода и введем текст, представленный в листинге 2.4.

Листинг 2.4. Программный код с вызовом функций Visual Basic

// В данном консольном приложении Visual С# используем функции Visual Basic.

// Приложение приглашает пользователя ввести два числа, анализирует,



// числа ли ввел пользователь, и выводит результат суммирования на экран.

// При этом используем функции Visual Basic: InputBox,

// IsNumeric (для контроля, число ли ввел пользователь) и MsgBox.

using System;

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

namespace VisualBasic1

{

class Program

{ // Для вызова функций из Visual Basic добавим ссылку в текущий проект.

// Для этого в пункте меню Project щелкнем мышью команду

// Add Reference и в диалоговом окне на вкладке .NET выберем

// элемент Microsoft.VisualBasic

static void Main(string[] args)

{

string Строка;

// Бесконечный цикл, пока пользователь не введет именно число:

for (; ; )

{

Строка = Microsoft.VisualBasic.Interaction.

InputBox("Введите первое число:", "Складываю два числа");

if (Microsoft.VisualBasic.Information.IsNumeric(Строка) == true) break;

}

// - преобразование строковой переменной в число:

Single X = Single.Parse(Строка);

// Ввод второго числа:

for (; ; )

{

Строка = Microsoft.VisualBasic.Interaction.

InputBox("Введите второе число:", "Складываю два числа");

if (Microsoft.VisualBasic.Information.IsNumeric(Строка) == true) break;

}

Single Y = Single.Parse(Строка);

Single Z = X + Y;
Строка = string.Format("Сумма = {0} + {1} = {2}", X, Y, Z) ;

// Вывод результата вычислений на экран:

Microsoft.VisualBasic.Interaction.MsgBox(Строка);

}

}

Ввод первого числа организуем с помощью бесконечного цикла for(;;){}. функция InputBox возвращает строку, введенную пользователем в диалоговом ок­не (рис. 2.5).



Рис. 2.5. Диалоговое окно ввода данных

Эта строка анализируется функцией IsNumeric, и если в строке записано число, то происходит выход break из вечного цикла. Аналогично организован ввод второ­го числа. Для преобразования строки символов, введенных пользователем, в число­вое значение используем метод Parse. Кстати, для преобразования строки симво­лов в числовое значение платформа .NET Framework содержит в себе метод TryParse, который более эффективно решает подобные задачи по проверке типа введенных данных и преобразованию их в числовое значение.

После вычисления суммы необходимо вывести результат вычислений из опера­тивной памяти в диалоговое окно MsgBox. Для этого вначале подготовим строку вывода с помощью метода String.Format. Выражение "Сумма = {0} + {1} = {2}" означает: взять нулевой выводимый элемент, т. е. переменную х, и записать ее вме­сто первых фигурных скобок, после чего взять первый выводимый элемент, т. е. переменную
y, и записать ее вместо вторых фигурных скобок, аналогично — для третьего выводимого элемента.

Результат работы программы представлен на рис. 2.6.



Рис. 2.6. Диалоговое окно вывода данных

Каждый раз, запуская это приложение, нам приходится искать диалоговые окна под черным окном консоли. Чтобы избавиться от этого окна, в окне свойств проек­та (Project | Properties) на вкладке Application в раскрывающемся списке Output type щелкнем на пункте Windows Application.

Убедиться в работоспособности программы можно, открыв соответствующее решение в папке CcылкаHaVisualBasic.

ГЛАВА 3 Инициирование и обработка событий мыши и клавиатуры


Пример 15. Координаты курсора мыши относительно экрана и элемента управления

Напишем программу, которую мы условно называем мониторингом положения мыши. Имеем форму, список элементов ListBox и два текстовых поля. Они распо­ложены в форме так, как показано на рис. 3.1.



Рис. 3.1. Фрагмент работы программы определения координат курсора мыши

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

Для программирования этой задачи после запуска Visual Studio 2010 и выбора шаблона Windows Forms Application С# из панели элементов управления Toolbox перетащим в форму элемент управления ListBox и два текстовых поля. В данной

программе нам понадобится обработать три события, относящиеся к объекту listBox1. Чтобы получить три соответствующих пустых обработчика в программ­ном коде, следует в конструкторе формы в панели свойств (Properties) щелкнуть на пиктограмме молнии и в появившемся списке возможных событий для объекта listBox1 выбрать следующие три события: MouseEnter, MouseLeave и MouseMove. Соответственно получим три пустых обработчика событий (листинг 3.1).

Листинг 3.1. Координаты курсора мыши относительно экрана и элемента управления

// Программа отображает координаты курсора мыши относительно экрана и элемента

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

// текстовых поля. Программа заполняет список ListBox данными о местоположении

//и изменении положения курсора мыши. Кроме того, в текстовых полях

// отображаются координаты положения курсора мыши относительно экрана

//и элемента управления ListBox.

using System;

using System. Windows. Forms;

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

namespace Monitoring

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

base.Text = "Мониторинг движения мыши";

}
// Процедура обработки события, когда указатель мыши оказывается

//на элементе управления ListBox

private void listBox1_MouseEnter(object sender, EventArgs e)

{ // Добавляем в список элементов новую запись

listBox1.Items.Add("Курсор мыши вошел в область ListBox");