Как создать индикатор выполнения смягчения в Visual C#

Переводы статьи Переводы статьи
Код статьи: 323116 - Vizualiza?i produsele pentru care se aplic? acest articol.
Для Microsoft Visual Basic.NET версии данной статьи, см. 323088.
Развернуть все | Свернуть все

В этой статье

Аннотация

В данной статье демонстрируется создание простого пользовательского Пользовательских элементов управления для создания гладких, прокрутка Компонент ProgressBar элемент управления.

В более ранних версиях Компонент ProgressBar элемент управления, например, версия которого обеспечивается с помощью элемента управления Microsoft Windows Общие элементы управления ActiveX, Просмотр хода выполнения в двух разных режимах. Используется для управления этими представлениями Прокрутка свойство, которое включает в себя настройки стандартных и гладкие. Плавная прокрутка создает блок сплошной цвет, представляющий хода выполнения, а стандартные прокрутки появляется сегментированных и состоит из ряда небольших блоков или прямоугольники.

В Компонент ProgressBar элемент управления, поставляемой с Microsoft Visual C# поддерживает только стандартные настройки.

Пример кода в этой статье показано, как создать элемент управления, поддерживающий следующие свойства:
  • Минимум. Это свойство получает или задает низкого значения для диапазона допустимых значений для хода выполнения. Значение этого свойства по умолчанию равно нулю (0); Это свойство нельзя задать отрицательное значение.
  • Максимум. Это свойство получает или задает наибольшее значение диапазона допустимых значений для хода выполнения. Значение этого свойства по умолчанию равно 100.
  • Значение. Это свойство получает или задает текущий уровень прогресса. Значение должно быть в диапазоне, Минимум и Максимум Определение свойства.
  • ProgressBarColor. Это свойство получает или задает цвет индикатора хода выполнения.

Создание пользовательского элемента управления ProgressBar

  1. Выполните следующие действия, чтобы создать новый проект Библиотека элементов управления Windows в Visual C#.
    1. Запустите Microsoft Visual Studio.
    2. На Файл Выберите пункт Новый, а затем нажмите кнопку Проект.
    3. В Новый проект диалоговое окно, нажмите кнопку Visual C# Из списка Типы проектов, а затем нажмите кнопку Библиотека элементов управления Windows Forms Из списка Шаблоны.

      Примечание В Visual Studio.NET 2003, щелкните Проекты Visual C# Вместо Visual C#.
    4. В Имя поле типа SmoothProgressBar, а затем нажмите кнопку ОК.
    5. В окне проекта переименуйте модуль класса по умолчанию из UserControl1.cs SmoothProgressBar.cs.
    6. В окне «Свойства» Пользовательских элементов управления Объект, изменение Имя свойство из UserControl1 Кому SmoothProgressBar.
  2. На этом этапе обычно наследуют от класса элемента управления и затем добавить дополнительные возможности для расширения существующего элемента управления. Тем не менее Компонент ProgressBar класс Запечатанные и не может быть наследован. Таким образом необходимо создать элемент управления с самого начала.

    Добавьте следующий код в файл SmoothProgressBar.cs в классе, который является производным от UserControl.

    Примечание В Visual Studio.NET 2003, добавьте код в модуль класса пользовательского элемента управления, производного класса сразу после раздела «Конструктора форм Windows Forms созданный код».
    int min = 0;	// Minimum value for progress range
    int max = 100;	// Maximum value for progress range
    int val = 0;		// Current progress
    Color BarColor = Color.Blue;		// Color of progress meter
    
    protected override void OnResize(EventArgs e)
    {
    	// Invalidate the control to get a repaint.
    	this.Invalidate();
    }
    
    protected override void OnPaint(PaintEventArgs e)
    {
    	Graphics g = e.Graphics;
    	SolidBrush brush = new SolidBrush(BarColor);
    	float percent = (float)(val - min) / (float)(max - min);
    	Rectangle rect = this.ClientRectangle;
    
    	// Calculate area for drawing the progress.
    	rect.Width = (int)((float)rect.Width * percent);
    
    	// Draw the progress meter.
    	g.FillRectangle(brush, rect);
    
    	// Draw a three-dimensional border around the control.
    	Draw3DBorder(g);
    
    	// Clean up.
    	brush.Dispose();
    	g.Dispose();		
    }
    
    public int Minimum
    {
    	get
    	{
    		return min;
    	}
    
    	set
    	{
    		// Prevent a negative value.
    		if (value < 0)
    		{
    			min = 0;
    		}
    		
    		// Make sure that the minimum value is never set higher than the maximum value.
    		if (value > max)
    		{
    			min = value;
    			min = value;
    		}
    		
    		// Ensure value is still in range
    		if (val < min)
    		{
    			val = min;
    		}
    
    		// Invalidate the control to get a repaint.
    		this.Invalidate();
    	}
    }
    
    public int Maximum
    {
    	get
    	{
    		return max;
    	}
    
    	set
    	{
    		// Make sure that the maximum value is never set lower than the minimum value.
    		if (value < min)
    		{
    			min = value;
    		}
    
    		max = value;
    
    		// Make sure that value is still in range.
    		if (val > max)
    		{
    			val = max;
    		}
    
    		// Invalidate the control to get a repaint.
    		this.Invalidate();
    	}
    }
    
    public int Value
    {
    	get
    	{
    		return val;
    	}
    
    	set
    	{
    		int oldValue = val;
    
    		// Make sure that the value does not stray outside the valid range.
    		if (value < min)
    		{
    			val = min;
    		}
    		else if (value > max)
    		{
    			val = max;
    		}
    		else
    		{
    			val = value;
    		}
    
    		// Invalidate only the changed area.
    		float percent;
    
    		Rectangle newValueRect = this.ClientRectangle;
    		Rectangle oldValueRect = this.ClientRectangle;
    
    		// Use a new value to calculate the rectangle for progress.
    		percent = (float)(val - min) / (float)(max - min);
    		newValueRect.Width = (int)((float)newValueRect.Width * percent);
    
    		// Use an old value to calculate the rectangle for progress.
    		percent = (float)(oldValue - min) / (float)(max - min);
    		oldValueRect.Width = (int)((float)oldValueRect.Width * percent);
    
    		Rectangle updateRect = new Rectangle();
    		
    		// Find only the part of the screen that must be updated.
    		if (newValueRect.Width > oldValueRect.Width)
    		{
    			updateRect.X = oldValueRect.Size.Width;
    			updateRect.Width = newValueRect.Width - oldValueRect.Width;
    		}
    		else
    		{
    			updateRect.X = newValueRect.Size.Width;
    			updateRect.Width = oldValueRect.Width - newValueRect.Width;
    		}
    
    		updateRect.Height = this.Height;
    
    		// Invalidate the intersection region only.
    		this.Invalidate(updateRect);
    	}
    }
    
    public Color ProgressBarColor
    {
    	get
    	{
    		return BarColor;
    	}
    
    	set
    	{
    		BarColor = value;
    
    		// Invalidate the control to get a repaint.
    		this.Invalidate();
    	}
    }
    
    private void Draw3DBorder(Graphics g)
    {
    	int PenWidth = (int)Pens.White.Width;
    
    	g.DrawLine(Pens.DarkGray, 
    		new Point(this.ClientRectangle.Left, this.ClientRectangle.Top),
    		new Point(this.ClientRectangle.Width - PenWidth, this.ClientRectangle.Top));
    	g.DrawLine(Pens.DarkGray,
    		new Point(this.ClientRectangle.Left, this.ClientRectangle.Top), 
    		new Point(this.ClientRectangle.Left, this.ClientRectangle.Height - PenWidth));
    	g.DrawLine(Pens.White,
    		new Point(this.ClientRectangle.Left, this.ClientRectangle.Height - PenWidth), 
    		new Point(this.ClientRectangle.Width - PenWidth, this.ClientRectangle.Height - PenWidth));
    	g.DrawLine(Pens.White,
    		new Point(this.ClientRectangle.Width - PenWidth, this.ClientRectangle.Top), 
    		new Point(this.ClientRectangle.Width - PenWidth, this.ClientRectangle.Height - PenWidth));
    } 
    					
  3. На Построение меню, нажмите кнопку Построение решения Чтобы скомпилировать проект.

Создание образца приложения клиента

  1. На Файл Выберите пункт Новый, а затем нажмите кнопку Проект.
  2. В Добавление нового проекта диалоговое окно, нажмите кнопку Visual C# Из списка Типы проектов, нажмите кнопку Приложение Windows Forms Из списка Шаблоны, а затем нажмите кнопку ОК.

    Примечание В Visual Studio.NET 2003, щелкните Проекты Visual C# Вместо Visual C#.
  3. Выполните следующие действия для добавления двух экземпляров SmoothProgressBar элемент управления в форму:
    1. На Сервис меню, нажмите кнопку Выбор элементов панели элементов.

      Примечание В Visual Studio.NET 2003, щелкните Настройка панели элементов Вместо Выбор элементов панели элементов.
    2. Нажмите кнопку .NET Framework компоненты Вкладка.
    3. Нажмите кнопку Обзора затем найдите файл SmoothProgressBar.dll, которая была создана в "Создание пользовательского элемента управления ProgressBar"раздел.
    4. Нажмите кнопку ОК. Обратите внимание, что SmoothProgressBar элемент управления добавляется в панель элементов.
    5. Перетащите два экземпляра SmoothProgressBar управления из панели элементов на форму по умолчанию для проекта приложения Windows.
  4. Перетаскивание Таймер управления из панели элементов на форму.
  5. Добавьте следующий код для Деления события Таймер элемент управления:
    if (this.smoothProgressBar1.Value > 0)
    {
    	this.smoothProgressBar1.Value--;
    	this.smoothProgressBar2.Value++;
    }
    else
    {
    	this.timer1.Enabled = false;
    } 
    					
  6. Перетаскивание Кнопка управления из панели элементов на форму.
  7. Добавьте следующий код для Нажмите кнопку события Кнопка элемент управления:
    this.smoothProgressBar1.Value = 100;
    this.smoothProgressBar2.Value = 0;
    			
    this.timer1.Interval = 1;
    this.timer1.Enabled = true; 
    					
  8. На Отладка меню, нажмите кнопку Начало для запуска образца проекта.
  9. Нажмите кнопку. Обратите внимание на то, что индикаторы два процесса отображения текста «выполняется». Один индикатор выполнения отображает ход выполнения возрастающей способом и индикатор выполнения отображает прогресс в уменьшении и целях обратного отсчета.

Свойства

Код статьи: 323116 - Последний отзыв: 8 июня 2011 г. - Revision: 4.0
Информация в данной статье относится к следующим продуктам.
  • Microsoft Visual C# 2008 Express Edition
  • Microsoft Visual C# 2005 Express Edition
Ключевые слова: 
kbsweptvs2008 kbhowtomaster kbmt KB323116 KbMtru
Переведено с помощью машинного перевода
ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.
Эта статья на английском языке:323116

Отправить отзыв

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com