Компьютерные книги
Главное меню
Главная Поиск по сайту Добавить материал О нас Карта книг Карта сайта
Реклама
computersbooks.net -> Добавить материал -> Языки программирования -> Ватсон К. -> "С#" -> 369

С# - Ватсон К.

Ватсон К. С# — Лори, 2005 . — 879 c.
ISBN 1-861004-98-2
Скачать (прямая ссылка): vatsonc2005.pdf
Предыдущая << 1 .. 363 364 365 366 367 368 < 369 > 370 371 372 373 374 375 .. 404 >> Следующая


Во-первых, необходимо включить следующий оператор в начало кода:

using System. Timor а;

Затем требуется создать экземпляр объекта Timer с помощью ключевого слова new:

System.Timers, Timer aTimer - new System.Timers .Timer О ;

Затем нужно включить в него обработчик событий, который определяет, какой именно метод должен быть вызван в момент истечения интервала времени. Именно здесь определяется, что в этом случае должен вызываться метод GetPollDataO:

aTimer.Elapsed ** new ElapsedEventHandler(GetPollData) ; .

После этого задается значение временного интервала и запускается таймер. В данном конкретном случае устанавливается интервал в 5 сек., хотя в реальной ситуации это значение должно быть настраиваемым:

aTimer.Interval=5000;

aTimer.Snabled=true;

Теперь есть набор управляющих элементов в форме и таймер, который будет вызывать метод GetPollData о, записывающий данные в форму каждые пять секунд. Первое, что должен выполнять описанный в Forml метод GetPollData!), это создавать экземпляр объекта класса-посредника web-службы, что позволит обращаться к созданным web-методам:

public void GetPollData( object source, ElapsedEventArgs e )

(

Results pollResults ж new Results О;

Чтобы задать в форме текст вопроса, нужно осуществить вызов web-метода Question через объект-посредник (pollResults) и использовать его для присваивания значения свойству Text управляющего элемента questionLabel:

queetionLabel.Text = pollResults.QuestionOj

Следующие две строки кода получают массив ответов и присваивают переменной myAnswerCount общее число ответов для данного опроса:

string[] pollAnswers « pollResults.Answers Оt

Int myAnswerCount ¦ pollAnswers.Length-1;

Теперь необходимо вычислить два значения, которые не предоставляются данными web-методами. Первое нз них — это суммарное количество голосов. Второе — это максимальное количество голосов, поданных за одни из ответов (это значение будет использовано для определения верхней границы лннеек графического представления). Для определения этих двух значений следует воспользоваться web-методом votes о, который возвращает массив счетчиков голосов, а затем пройти
786______________________________________._______________________________Практический пример

по этому массиву в цикле, обновляя текущие значения переменных totaivotes (общее количество голосов) и higheatvote (максимальное количество голосов) по мере просмотра этого массива:

, int totaivotes = 0;

int higheatvote = Oj

int[] pollVotes » pollReeults,Votes О;

¦ for (int i=l;i<=fflyAnswerCountfi-*-+)

' {

totalvotea = totaivotes + pollVotes[i];

4 pollVotesft) > higheatvote) higheatvote * pollVotes[i)i

Для вычисления процентного отношения голосов потребуется целая переменная: int percentageVote; .

В нескольких последующих строках кода мы будем проходить в цикле по всем ответам и присваивать соответствующие значения в каждый из трех столбцов управляющих элементов формы — сначала текст ответа, затем результагы голосования (в том числе и в виде процентов) и, наконец, линейку графического представления. Для этого мы организовываем цикл for:

. for (int i“l;i<=inyCountAnawer; i++)

Мы присваиваем текст ответа в первый столбец управляющих элементов формы, для чего используется свойство Text управляющего элемента Label. Доступ к соответствующему управляющему элементу Label осуществляется с помощью массива управляющих элементов, созданного ранее. Обратите внимание на то, что, поскольку индекс массива управляющих элементов в отличие от индекса массива ответов отсчитывается с нуля, мы вычитаем единицу из его значения:

answerControle[i-ll .Text ж pollAnswersIi];

Для присваивания значений полям, в которых содержится число голосов, используется аналогичная процедура, однако сначала необходимо определить процентное соотношение. Для этого сначала следует разделить число голосов для данного ответа на суммарное число голосов. Результат деления записывается в переменную типа float:

float voteFraction = i(float)pollVote»ti]/(float)totaivotes)j

Чтобы получить значение, выраженное в процентах, нужно умножитг> полученное число на сто:

percentageVote * (int)(100 * voteFraction)j

Чтобы иметь возможность вывести счетчик голосов, нужно присвоить копню числа голосов в текстовом виде свойству Text, соответствующему управляющему элементу, который хранится в массиве управляющих элементов для счетчиков г олосов:

voteControls[i-l] .Text = pollVotea[i) .ToStringO*" *;

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

voteControls[i-11.Text +» *(* * percentagevote.ToString() + *%)';
Практический пример 1 — web-сайт для проведения опросов

787

Для задания линейки графического представления необходимо установить максимальное значение, которого она может достигать, и фактическое значение. Для задания максимального значения используется ранее определенная переменная hisrheetvote, а затем задается фактическое значение счетчика голосов с помощью СВОНСТВа Value!
Предыдущая << 1 .. 363 364 365 366 367 368 < 369 > 370 371 372 373 374 375 .. 404 >> Следующая
Книги
Web-программирован-
ие
Аппаратное обеспечение Графика Руководство по П.О. Самоучитель Теория программирования Фотошоп Языки программирования
Новые книги
Вирт Н. "Систематическое программирование " (Теория программирования)

Эком "Microsoft Excel 2000 шаг за шагом Русская версия самоучитель " (Самоучитель)

Поляков А.Ю. "Методы и алгоритмы компьютерной графики в примерах Vizual C++" (Графика)

Баяковский Ю.М. "Графическая библиотека Open GL " (Графика)

Валиков А. "Технология " (Языки программирования)
Авторские права © 2013 ComputersBooks. Все права защищены.