Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Установка значения, отображаемого c помощью элемента управления ProgressBar в Windows FormsСодержание книги
Поиск на нашем сайте
.NET Framework позволяет отображать заданное значение в элементе управления ProgressBar несколькими способами. Выбор способа зависит от поставленной задачи или проблемы, которую требуется решить. В следующей таблице показаны доступные для выбора подходы.
Самый прямой способ задать значение, отображаемое индикатором выполнения, — задать значение свойства Value. Это можно сделать в режиме разработки, а также во время выполнения. Чтобы задать значение элемента управления ProgressBar напрямую 1. Задайте значения Minimum и Maximum элемента управления ProgressBar. 2. В коде задайте для свойства Value элемента управления целочисленное значение, которое находится между указанными минимумом и максимумом. Примечание. Если задать значение свойства Value, которое выходит за рамки диапазона, установленного свойствами Minimum и Maximum, элемент управления создает исключение ArgumentException. В следующем примере кода показано, как задать значение элемента управления ProgressBar напрямую. С помощью кода последовательно в текстовом многострочном поле textBox1 создается список файлов из папки Мои документы. Каждый раз при записи имени очередного файла в текстовое поле обновляются индикатор выполнения и его метка. Для данного примера требуется присутствие на форме элемента управления textBox иэлемента управления ProgressBar. private void toolStripMenuItem6_Click(object sender, EventArgs e) { int i; DirectoryInfo Dir = new DirectoryInfo(@"C:\Мои документы"); FileInfo[] F1 = new FileInfo[100]; F1=Dir.GetFiles(); string[] Ln = new string[100]; for (i = 0; i < F1.Count(); i++) { Ln[i] = F1[i].Name; progressBar1.Value = i; } progressBar1.Value = 100; textBox1.Lines = Ln; } При отображении хода выполнения, который увеличивается на постоянный числовой интервал, можно задать значение и затем вызвать метод, который увеличивает значение элемента управления ProgressBar на этот числовой интервал. Это используется в таймерах и других сценариях, когда ход выполнения не измеряется в процентах от общей величины. Чтобы увеличить отображаемое значение индикатора выполнения на фиксированную величину 1. Задайте значения Minimum и Maximum элемента управления ProgressBar. 2. В качестве значения свойства Step задайте целое число, представляющее величину, на которую следует увеличить отображаемое значение индикатора выполнения. 3. Вызовите метод PerformStep для изменения отображаемого значения на величину, заданную в свойстве Step. В следующем примере кода показано, как с помощью индикатора выполнения отобразить течение времен за промежуток20секунд с шагом 2 секунды. В этом примере требуется, чтобы форма содержала элемент управления Timer и элемент управления ProgressBar. В окне Свойства для элемента управления Timer установите свойства: Interval =2000; Enabled =false (таймер не запущен). В окне Свойства для элемента управления ProgressBar установите свойства: Minimum =0; Maximum =10; Step =1. Пропишите функцию изменения состояния элемента управления ProgressBar через каждые 2 сек на 1 прямоугольник. private void timer2_Tick(object sender, EventArgs e) { if (ProgressBar1.Value < ProgressBar1.Maximum) ProgressBar1.PerformStep(); else {timer2.Enabled=false; progressBar1.Value=0;} } Пропишите функцию запуска таймера. private void toolStripMenuItem6_Click(object sender, EventArgs e) { timer2.Enabled = true; } Наконец, можно увеличить значение, отображаемое индикатором выполнения, таким образом, чтобы каждое приращение являлось уникальным числом. Это используется при отслеживании серий уникальных операций, например при записи файлов различных размеров на жесткий диск или при измерении хода выполнения в процентах от общего значения. Чтобы увеличить отображаемое значение индикатора выполнения на переменную величину 1. Задайте значения Minimum и Maximum элемента управления ProgressBar. 2. Вызовите метод Increment для изменения отображаемого значения на указанную величину. В следующем примере кода создаются три числа из диапазона [3;8] и индикатором показывается, как изменяется значение переменной S (S=0 изначально), если к ней последовательно прибавлять созданные числа. В этом примере требуется, чтобы форма содержала элемент управления Label, элемент управления Timer и элемент управления ProgressBar. Объявите глобальные переменные: public static class loc { public static Color cl; public static int[] y=new int[3]; public static int k,S=0; } Пропишите функцию изменения состояния элемента управления ProgressBar: private void timer3_Tick(object sender, EventArgs e) { if (loc.k < 3) { if (loc.k >0) label4.Text = label4.Text + "+"; label4.Text = label4.Text + loc.y[loc.k].ToString(); progressBar2.Increment(loc.y[loc.k]); loc.k++; } else { timer3.Enabled = false; label4.Text = label4.Text + "="+loc.S.ToString(); }; }. Пропишите функцию запуска таймера. private void toolStripMenuItem6_Click(object sender, EventArgs e) { loc.k = 0; timer3.Enabled = true; Random x = new Random(); for (i = 0; i < 3; i++) { loc.y[i] = x.Next(6) + 3; loc.S = loc.S + loc.y[i]; }; progressBar2.Maximum = loc.S; label4.Text = "S="; } Примечание. Представленные выше варианты кода не являются единственными. Пример. Создадим репетитор по работе с клавиатурой. При нажатии кнопки «Новый текст» в поле Текст должен появляться текст из нескольких слов и запускаться таймер. По истечении времени, указанном в поле NumericUpDown, производится подсчет верных символов, введенным пользователем в текстовое поле. Число слов должно генерироваться по принципу: 1-3 слова на каждые 5 сек. Число символов в слове должно генерироваться по принципу: 3-6 символа на 1 слово. По истечении времени текстовое поле блокируется от ввода данных. Решение. 1. Создадим ряд вспомогательных переменных: namespace Metodichka { public partial class Form11: Form { // время, индикатор процесса, время процесса int t = 5,ind=0,tp=0; // начальное время процесса DateTime t0; // датчик случайных чисел Random r = new Random(); // число слов int n = 2; } } 2. Создадим функцию генерирования слов в зависимости от установленного времени: private string word(object sender, EventArgs e) { string s=""; // d – длина слова, cod – код символа int i, j, cod, d; for (i = 0; i <= n; i++) { d=r.Next(4,7); for (j = 0; j < d; j++) { cod = r.Next(1072, 1103); s = s + Char.ConvertFromUtf32(cod); } s = s + " "; } return s; } 3. В обработчике загрузке формы пропишем начальные данные: private void Form11_Load(object sender, EventArgs e) { // Системное время, отображаемое в строке состояния toolStripStatusLabel1.Text = "Время: " + DateTime.Now.ToLongTimeString(); } 4. В обработчике изменения времени в счетчике NumericUpDown пропишем сохранение значения в переменной длины процесса t: private void numericUpDown1_ValueChanged(object sender, EventArgs e) { t = Convert.ToInt16(numericUpDown1.Value); } 5. Создадим функцию, осуществляющую проверку ответа, вводимого пользователем: private void proverka(object sender, EventArgs e) { // k – число верных символов, min – длина проверяемой строки int k = 0,min=0, i; if (label2.Text.Length < textBox1.Text.Length) min = label2.Text.Length; else min = textBox1.Text.Length; for (i = 0; i < min; i++) if (label2.Text[i] == textBox1.Text[i]) k++; int pr=k*100/label2.Text.Length; label4.Text = "Верных символов: " + k.ToString() + " - " + pr.ToString()+"%"; } 6. В обработчике нажатия кнопки «Новый текст» пропишем начальные параметры процесса: private void toolStripButton1_Click(object sender, EventArgs e) { // фиксируем время начала процесса t0 = Convert.ToDateTime(DateTime.Now); //рассчитываем число слов n = t / 5 * 2; // очищаем текстовое поле textBox1.Text = ""; // генерируем текст label2.Text = word(sender, e); //переводим курсор в текстовое поле textBox1.Focus(); //включаем индикатор процесса ind = 1; //делаем доступным для ввода текстовое поле textBox1.Enabled = true; //устанавливаем индикатор процесса в строке состояния в начальное положение toolStripProgressBar1.Value = 0; //задаем максимальное значение индикатора процесса в строке состояния toolStripProgressBar1.Maximum = t; // можно задать единое количество шагов // toolStripProgressBar1.Step = t / 5; } 7. В обработчике работы таймера пропишем код: private void timer1_Tick(object sender, EventArgs e) { //если процесс запущен, то меняем параметры процесса if (ind==1) { //фиксируем текущее значение времени процесса tp=(Convert.ToDateTime(DateTime.Now) - t0).Seconds; //отображаем значение времени процесса в строке состояния toolStripStatusLabel2.Text = "Процесс: "+tp.ToString(); //изменяем показатель индикатора процесса в строке состояния toolStripProgressBar1.PerformStep(); } // в строке состояния отображаем системное время toolStripStatusLabel1.Text = "Время: " + DateTime.Now.ToLongTimeString(); //если время процесса стало равным заданному в счетчике, то останавливаем процесс if (tp >= t) {//останавливаем процесс ind = 0; //делаем недоступным для ввода текстовое поле textBox1.Enabled = false; //запускаем функцию проверки результата proverka(sender, e); //обнуляем текущее время процесса, чтобы повторно не заходить в данный блок tp = 0; }}
|
||||||||||||
Последнее изменение этой страницы: 2017-01-20; просмотров: 506; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.226.52.80 (0.006 с.) |