Visual Basic .NET для чайников - У. Вонг. Visual Basic .NET для чайников - У. Диалектикамосква СанктПетербург Киев
Скачать 7.1 Mb.
|
Глава Получение данных от пользователя I ListBox (Список); Checked ListBox (Список флажков); RichTextBox (Расширенное текстовое поле); 1 DomainUpDown. Текстовое поле, расширенное текстовое поле и поле со списком позволяют пользователю са- мому набрать текст. (Если для свойства Style поля со списком установлено значение DropDownList, пользователь сможет выбрать только одно из заранее определенных шачений.) Поскольку пользователь имеет возможность набрать для этих объектов любой текст (включая ругательства и разного рода бесполезную информацию), вы можете написать дополнительные коды BASIC для отсеивания неприемлемых данных. В противном случае, если пользователь введет данные, которые программа не в со- стоянии будет правильно интерпретировать, она может зависнуть, прекратить ра- боту или просто выдать неверный результат. Список, поле со списком, список флажков и объект DomainUpDown отображают готовые варианты ответа, из числа которых пользователь и делает свой выбор. Поскольку все воз- можные варианты ответа определены заранее, от пользователя может быть принято только допустимое значение. Чтобы программа определила, какую текстовую информацию оставил для нее пользова- тель, переменной нужно присвоить то же значение, которое сохранено в свойстве Text. Вот как это делается: = Вам нужно заранее объявить о создании переменной, имеющей тип S t r i n g , и вместо слова ИмяОбъекта набрать название реального объекта. Например, если вам нужно узнать, какую информацию оставил пользователь в текстовом поле txtMessage, и сохранить таковую в качестве значения переменной s t r l n f o , наберите следующий код BASIC: Dim strlnfo As String strlnfo = Текстовые поля можно также использовать для получения от пользователя число- вой информации. Но при этом не следует забывать, что Visual Basic интер- претирует введенные в текстовые поля числа как текст. Чтобы преобразовать стро- ки в числа, следует воспользоваться специальными командами BASIC, наподобие и CSng. О том, как строки преобразовываются в числовые значения различ- ных типов данных, подробно рассказано в главе 18. логической Среди элементов пользовательского интерфейса есть два типа объектов, которые почти всегда отображаются группами. Это флажки и переключатели. Чтобы определить, какой из флажков или переключателей был выбран пользователем, нужно проверить для каждого из них значение свойства Checked. Это свойство может принимать лишь одно из логических значений (тип данных Boolean): I True (объект выбран); I F a l s e (объект не выбран). Часть IV. Основы создания кодов Напротив невыбранного флажка или переключателя отображается пустое окошко, напро- тив выбранного —• флажок или большая точка. Для использования данных, сохраненных в качестве значений свойства Checked, использовать отдельную переменную необязательно. Вы можете ссылаться в кодах BASIC непосредственно на значение свойства Checked. Например, вам необяза- тельно писать следующий код: Dim Flag As Boolean Flag = If Flag = True Then = "Соглашение д о с т и г н у т о ! " End If Вместо этого достаточно набрать If = True Then = "Соглашение End If Более того, вы можете даже опустить = True и набрать только If Then = "Соглашение достигнуто!" End If Несколько подробнее об использовании логических значений в блоках будет рассказано в главе 22. Сейчас же вам нужно лишь просмотреть приведенные выше примеры, чтобы получить о них хотя бы общее представление. числовых Если значение, которое определяет пользователь, может принадлежать к очень большому диапазону (например, один раз будет введено число 0,0093, а в другой раз —- число 85 для получения информации лучше использовать текстовые поля. Но в большинстве случаев воз- можные значения будут принадлежать небольшому диапазону чисел, например от 0 до 100. Если вы хотите, чтобы пользователь выбрал значение из заранее определенного интерва- ла, можете использовать один из следующих объектов пользовательского интерфейса: | (тип данных Decimal); (тип данных I n t e g e r ) ; | (тип данных Integer); (тип данных Long). Вместо того чтобы заставлять пользователя набирать какое-то число, перечисленные вы- ше позволяют прокрутить список возможных значений в поиске такового и просто щелкнуть на нужном значении, которое потом будет сохранено как значение свойства Value. Чтобы сохраненными данными можно было оперировать, переменной нужно присвоить значение свойства Value. Для этого наберите такой код: = Глава Получение данных от пользователя Вам нужно заранее объявить о создании переменной, имеющей определенный тип данных. Вместо кода нужно набрать название реального объекта. Например, если вам нужно узнать, какое число сохранено объектом именуемом и сразу же сохранить его в качестве значения переменной наберите следующий код BASIC: Dim intHoMep As I n t e g e r intHoMep = из списка нескольких Если при работе со списком или полем со списком вы присвоите свойству SelectionMode значение или MultiExtended, пользователь, удерживая нажатой клавишу или Чтобы определить, какие именно элементы списков были выбраны пользователем, нужно воспользоваться значениями свойств Selectedltem и Selectedlndices. В свойстве Selectedltem содержатся значения выбранных элементов, а в свойстве Se- lectedlndices — их номера. Например, если пользователь выбрал первый и третий элементы списка, свойство Selectedlndices будет содержать значение 0 (это номер первого элемента) и значение 2 (номер третьего элемента). Сколько элементов выбрал пользователь? Чтобы определить, сколько именно элементов выбрал пользователь, наберите следующий код BASIC: Dim Количество As I n t e g e r Количество = В приведенном выше примере переменной вместо имени Количество можно присвоить любое другое имя, а вместо слова Список нужно указать настоящее название вашего списка Количество выбранных пользователем элементов можно подсчитать только для списка или поля со списком, у которого свойству SelectionMode присвоено значе- ние M u l t i S i n g l e или MultiExtended. Определение выбранных пользователем элементов Если вы знаете, сколько элементов списка было выбрано пользователем, то можете соз- дать цикл (циклы подробно описаны в главах 24 и 25), чтобы получить значения всех этих элементов, которые Visual Basic хранит как значения свойства Selectedltems.ltem. Значение отдельно выбранного элемента определяется кодом Здесь вместо слова ИмяСписка нужно указать действительное название вашего списка или поля со списком, а вместо буквы х — номер выбранного элемента. Например, если поль- Часть IV. Основы создания кодов зователь выбрал три элемента из списка, именуемого L i s t B o x l , первому из них соответст- вует нулевой номер, а его значение определяется кодом ListBoxl. terns. выбранный элемент имеет номер 1, а его значение, соответственно, определяется Третий выбранный элемент имеет порядковый номер 2 и т.д., что показано на рис. you found test , , Rodent DDT ListBoxl ListBoxl /6. Пользователь выбрал в этом списке сразу несколько элементов Если пользователь выбирает в списке сразу несколько элементов, сохраненные Visual Basic значения элементов имеют тип данных C o l l e c t i o n (будет рас- смотрен в главе 20). После извлечения эти данные нужно будет преобразовать в тип S t r i n g , использовав для этого команду CStr. Ниже приведен пример кода BASIC, определяющего значения всех выбранных элементов списка. Dim К As I n t e g e r For К = 0 to - 1) MsgBox "Этот элемент был выбран") Next В первой строке создается переменная К, имеющая тип I n t e g e r . 2. Во второй строке создается цикл For-Next, начинающийся нулевой итерацией и заканчивающийся итерацией, номер которой на единицу меньше количества выбранных пользователем элементов. Например, если было выбрано четыре цикл начнется нулевой, а закончится третьей итерацией, т.е. всего их будет четыре. (Если вам сейчас это кажется не очень понятным, не переживайте, так как более подробно цикл For-Next описывается в главе 25.) 3. В третьей строке для отображения окна с сообщением используется команда MsgBox. Заголовком окна будет надпись "Этот элемент был а сооб- щением — сам выбранный элемент. На каждой итерации для отображения следующего выбранного элемента открывается новое окно. Таким образом, если пользователь выбрал, предположим, три элемента, окно с сообщением тоже будет открываться три раза. 4. Четвертая строка обозначает конец цикла For-Next. Глава 16. Получение данных от пользователя 181 Тест на проверку полученных вами знаний . Что делает следующий код BASIC: = Заставляет Visual Basic вывести на экран подсказку, объясняющую, чем яв- ляется б. Если Visual Basic не может понять, для чего вы набрали Value, на экране появляется такой во- прос. в. Ничего не делает, поскольку для Visual такой тон обращения является оскорбительным. Переменной ЧтоЭто присваивается значение свойства Value объекта VScrBar. 2. При каком условии в списке или в поле со спи- ском можно выбрать сразу несколько вариантов? а. Только в том случае, если там имеются эти несколько вариантов. б. Главное, за- хотел вариантов, при известно, возможно. в. программа качнет и что какой-то вариант уже был вы- бран, тогда можно будет выбрать еще пароч- , г. Если свойству Selection Mode этого спи- ска или поля со списком присвоено значение 182 Часть Основы создания кодов Глава 17 Займемся математикой главе... > Сложение, вычитание, умножение и деление чисел > Операторы Not, And, Or и > Операторы сравнения Приоритет операторов оступившие от пользователя данные (будь то числовые значения или текстовые) не- обходимо обработать, т.е. произвести над ними вычисления и получить результат. Для получения любого нового результата данные, поступившие от пользователя, нужно оп- ределенным образом изменить — модифицировать, преобразовать или что-то еще с ними сде- лать. Любые изменения подразумевают выполнение определенных операций, а специальные команды, изменяющие данные для получения нового результата, называются операторами. В языке Visual Basic существует три вида операторов: арифметические; I логические; | операторы сравнения. Арифметические операторы, по существу, превращают ваш красивый дорогой компьютер в пятидолларовый калькулятор. Они занимаются сложением, вычитанием, умножением, де- лением чисел и числовых переменных. Наиболее часто употребляемые арифметические опе- раторы представлены в табл. Таблица Арифметические операторы Оператор Выполняемая операция + Сложение двух чисел Вычитание * Умножение / Деление, результатом которого будет число с плавающей запятой (тип D e c i m a l } , например 3,14; 15,2; 652,1248 \ Деление, результатом которого будет целое число Mod Вычисление остатка от деления Возведение в степень & Объединение (конкатенация) двух строк Глава Займемся математикой 183 Тип переменных, участвующих в одной операции, обязательно должен совпадать. Если переменные, которые должны участвовать в вычислениях, относятся к разно- му типу, приведите их вначале к одному типу данных. О том, как это можно сде- лать, рассказано ниже, в разделе типов переменных". Сложение двух чисел При необходимости к одному числу добавить другое используется оператор сложения ( + ), например; X, Y, Sum As S i n g l e X = 10 Y 1 5 . 4 Sum = X + Y В данном случае переменной Sum присваивается значение 10+15, 4, или 2 5 , 4. Для большей лаконичности можно использовать оператор +=, например: X += Y Этот код эквивалентен следующему: X = X + Y Вычитание чисел Для того чтобы от одного числа отнять другое, воспользуйтесь оператором вычитания ( - ), например: Dim Прибыль, Доход, Расход As I n t e g e r Доход = 2500 Расход 1500 Прибыль = Доход - Расход Переменной Прибыль будет присвоено значение 1000 (2500-1500). Если от значения переменной нужно отнять число, а полученный результат при- своить той же переменной, воспользуйтесь оператором - = , например: X - = Y Данный код равнозначен такому коду: X = X - Y Получение отрицательных чисел Применив оператор вычитания к одной переменной, можно поменять ее значение на про- тивоположное, т.е. положительное число сделать отрицательным и наоборот. Например: Дебет, Кредит As I n t e g e r Дебет = 500 Кредит = — Дебет В этом случае переменной Кредит будет присвоено значение -500. Умножение чисел Если нужно одно число умножить на другое, воспользуйтесь оператором умножения ( ), как показано в следующем примере: Часть IV. Основы создания кодов Dim Цена, Количество, Сумма As Single Цена = 25 Количество 8 Сумма = Цена * Количество Переменной Сумма будет присвоено значение 200 Если значение переменной нужно умножить на определенное число, а полученный результат присвоить этой же переменной, воспользуйтесь оператором *=, например: X Y Этот код эквивалентен коду X X Y Операция деления При необходимости разделить одно число на другое и получить точный результат, пред- ставленный числом с плавающей запятой (тип Decimal), используйте оператор деления, обозначаемый прямой косой чертой ( / ). Например: Dim Игры, Баллы, СреднийБалл As S i n g l e Игры = Баллы = 104 СреднийБалл = Баллы / Игры Переменной СреднийБалл будет присвоено значение 0, 6419753 (104/162). Если значение одной переменной нужно разделить на число и полученный резуль- тат присвоить той же переменной, воспользуйтесь оператором /=, например: X /= Y Этот код равнозначен коду X = X / Y В случае, если возвращаться должна только целая часть числа, полученного в результате деления (т.е. если нужно получить целочисленный результат), применяется оператор деления, представленный обратной косой чертой ( \ ). Например: Dim Грузоподъемность, ВесБлока, Принять As I n t e g e r Грузоподъемность = 1900 ВесБлока 72 Принять = Грузоподъемность \ Вес Вот как Visual Basic будет интерпретировать эти команды 1. Первая строка говорит Visual Basic "Создай переменные Грузоподъ- емность, ВесБлока и Принять типа I n t e g e r " . 2. Вторая строка говорит: "Присвой переменной Грузоподъемность значение 1900". 3. Третья строка дает указание: "Присвой переменной ВесБлока значение 7 2". 4. А четвертая строка говорит: "Присвой переменной Принять значение, равное целой части числа, полученного в результате деления значения переменной Грузоподъемность на значение переменной ВесБлока". Переменной Принять будет присвоено значение 2 6. Глава 17. Займемся математикой Чтобы лучше понять, какие при этом производятся действия, если в качестве оператора используется обратная косая черта, рассмотрим еще один пример. = 2.5 Число2 = 1 . 5 Результат = Число1 \ Число2 Прежде чем выполнить операцию деления, Visual Basic округляет исходные значе- ния до ближайших целых чисел. (Если значение расположено посредине между двумя целы- ми числами, например между 1,5 и 2,5, оно округляется до большего целого числа.) В нашем примере значение переменной округляется до числа 3, а значение переменной Чис- ло2 — до числа 2. Результатом деления числа 3 на число 2 будет число 1,5, но поскольку оператор косая возвращает только целую часть от полученного результата, переменной Результат будет присвоено значение 1. Для большей лаконичности можете использовать оператор например: X \= У Этот код равнозначен следующему коду: X = X \ Применение оператора Mod Если нужно определить остаток от деления двух чисел, используйте оператор Mod. Рас- смотрим это на следующем примере. Dim Грузоподъемность, Остаток As I n t e g e r Грузоподъемность = 0 ВесБлока = 72 Остаток = Грузоподъемность Mod 1. Первая строка говорит Visual Basic переменные Грузоподъ- емность, ВесБлока и Остаток типа I n t e g e r " . 2. Вторая строка: "Присвой переменной Грузоподъемность значение 1900". 3. Третья строка: '"Присвой переменной ВесБлока значение 72". 4. Четвертая строка: "Присвой переменной Остаток значение, равное остатку от деления значения переменной на значение перемен- ной ВесБлока". Переменной Остаток будет присвоено значение 2 Возведение в степень Возведением в степень называется умножение числа самого на себя определенное количе- ство раз. Например, если число 2 умножить четыре раза само на себя, т.е. 2 * 2 * 2 * 2 , полу- чим 2 в четвертой степени (на письме обозначается как 2 ). Поскольку вы не можете набрать 2 4 , а набирать 2 * 2 * 2 * 2 не очень Visual Basic располагает для таких случаев оператором возведения в степень ( ). Чтобы получить нужный результат, достаточно набрать 2 4 Для большей лаконичности можете использовать оператор например: X Y Этот код равнозначен коду X = X Y Часть IV. Основы создания кодов Конкатенация двух строк двух строк называется объединение их в одну строку. Для этого используется оператор & (амперсант). Рассмотрим операцию объединения двух строк на следующем примере. Dim Имя, Фамилия, String Имя = "Джон " Фамилия = "Ленон" ПолноеИмя = Имя & Фамилия При объединении строк не забывайте в конце первой строки добавлять пробел или вставляйте пробел как отдельную строку между двумя другими строками. В противном случае буквы двух строк просто сольются в одно слово, например так: Вот как Visual Basic интерпретирует приведенный выше код. 1. Первая строка говорит: "Создай три переменные типа S t r i n g и назови их Имя, Фамилия и ПолноеИмя". 2. Вторая строка: переменной Имя значение Джон". Обратите внима- ние, что присваиваемое значение заканчивается пробелом. 3. Третья строка: "Присвой переменной Фамилия значение Ленон". 4. А четвертая строка дает указание: "Объедини значения переменных Имя и Фами- лия и присвой полученное значение переменной ПолноеИмя". В результате такой операции переменной ПолноеИмя будет присвоено значение Джон Ленон. С целью конкатенации строк может использоваться как символ амперсант (&), так и знак "плюс" (+}. Но поскольку последний применяется и для сложения чисел, для обозначения операции объединения строк лучше его не использовать, поскольку в этом случае сложнее будет читать коды вашей программы. Для большей лаконичности при написании кодов для объединения строк можно использовать оператор например: Имя &= Фамилия Этот код эквивалентен следующему коду: Имя = Имя & Фамилия Изменение типов переменных Типы переменных, над которыми выполняются арифметические операции, должны быть одинаковыми (например, все переменные должны иметь тип I n t e g e r ) или подобными (каковыми являются, в частности, тип S i n g l e и тип Double). Если, предположим, нужно сложить значения двух переменных, тип одной из которых I n t e g e r , а второй — Double, вначале измените тип одной из переменных. Чтобы изменить тип переменной, нужно набрать код, подобный приведенному ниже: ФункцияПреобразования (Аргумент) В зависимости от типа, к которому нужно преобразовать данные, вместо слова Функция подставляется название соответствующей функции. Вместо слова Аргу- мент подставляется число, переменная или выражение, тип которых нужно преобразовать. если нужно преобразовать значение типа S i n g l e (хранится в переменной X) в значение типа наберите следующий код: Dim Y I n t e g e r Y = (X) |