Làm th? nào đ? t?o thanh tieán tr?nh m?n trong Visual C#

D?ch tiêu đ? D?ch tiêu đ?
ID c?a bài: 323116 - Xem s?n ph?m mà bài này áp d?ng vào.
Đ?i v?i m?t Microsoft Visual Basic.NET Phiên b?n c?a bài vi?t này, xem 323088.
Bung t?t c? | Thu g?n t?t c?

? Trang này

TÓM T?T

Bài vi?t này ch?ng t? làm th? nào đ? t?o m?t đơn gi?n, tu? ch?nh UserControl đ? t?o ra m?t m?n, di chuy?n ProgressBar ki?m soát.

Trong phiên b?n trư?c c?a các ProgressBar ki?m soát, ch?ng h?n như các phiên b?n cung c?p v?i Microsoft Windows ph? bi?n đi?u khi?n ActiveX control, b?n có th? xem s? ti?n b? trong hai quan đi?m khác nhau. Đ? ki?m soát nh?ng quan đi?m, b?n s? d?ng các Di chuy?n b?t đ?ng s?n, bao g?m các cài đ?t tiêu chu?n và m?n. Uy?n s?n xu?t m?t kh?i r?n màu s?c đ?i di?n cho s? ti?n b?, và di chuy?n tiêu chu?n xu?t hi?n phân đo?n và bao g?m m?t lo?t các nh? kh?i ho?c h?nh ch? nh?t.

Các ProgressBar đi?u khi?n đư?c bao g?m v?i Microsoft Visual C# h? tr? ch? là các thi?t l?p tiêu chu?n.

M?u m? trong bài vi?t này minh ho? cách đ? t?o ra m?t đi?u khi?n h? tr? các tính ch?t sau:
  • T?i thi?u. Đ?c tính này l?y đư?c ho?c đ?t giá tr? th?p hơn cho ph?m vi giá tr? h?p l? cho ti?n b?. Giá tr? m?c đ?nh c?a tài s?n này là zero (0); b?n không th? đ?t thu?c tính đ?n m?t giá tr? tiêu c?c.
  • T?i đa. Đ?c tính này l?y đư?c ho?c đ?t giá tr? mid cho ph?m vi giá tr? h?p l? cho ti?n b?. Giá tr? m?c đ?nh c?a tài s?n này là 100.
  • Giá trị. Đ?c tính này l?y đư?c ho?c b? c?p đ? hi?n t?i c?a s? ti?n b?. Giá tr? ph?i n?m trong ph?m vi mà các T?i thi?u và các T?i đa thu?c tính xác đ?nh.
  • ProgressBarColor. Đ?c tính này l?y đư?c ho?c đ?t màu s?c c?a thanh tieán tr?nh.

T?o m?t tu? ch?nh ProgressBar control

  1. Th?c hi?n theo các bư?c sau đ? t?o ra m?t d? án m?i thư vi?n đi?u khi?n c?a Windows trong Visual C#:
    1. B?t đ?u Microsoft Visual Studio.
    2. Trên các Tệp tr?nh đơn, đi?m đ?n M?i, sau đó b?m Dự án.
    3. Trong các D? án m?i h?p tho?i h?p, b?m vào Visual C# dư?i Các lo?i d? án, sau đó b?m Thư vi?n đi?u khi?n c?a Windows Forms dư?i Khuôn mẫu.

      Chú ý Trong ph?ng thu tr?c quan.NET 2003, h?y nh?p vào Visual C# các d? án Thay v? Visual C#.
    4. Trong các Tên h?p, lo?i SmoothProgressBar, sau đó b?m Ok.
    5. Trong d? án Explorer, đ?i tên m?c đ?nh l?p module t? UserControl1.cs đ? SmoothProgressBar.cs.
    6. Trong c?a s? thu?c tính cho các UserControl đ?i tư?ng, thay đ?i các Tên b?t đ?ng s?n t? UserControl1 đ? SmoothProgressBar.
  2. T?i th?i đi?m này, b?n thư?ng k? th?a khóa đó ki?m soát và sau đó thêm các ch?c năng b? sung đ? m? r?ng m?t đi?u khi?n hi?n có. Tuy nhiên, các ProgressBar l?p là niêm phong và không th? đư?c th?a hư?ng. V? v?y, b?n ph?i xây d?ng s? ki?m soát t? đ?u.

    Thêm m? sau vào t?p tin SmoothProgressBar.cs trong l?p có ngu?n g?c t? UserControl.

    Chú ý Trong ph?ng thu tr?c quan.NET 2003, thêm m? đ? module l?p l?p UserControl b?t ngu?n, ch? sau khi ph?n "Windows m?u thi?t k? t?o ra m?".
    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. Trên các Xây d?ng tr?nh đơn, nh?p vào Xây d?ng gi?i pháp đ? biên d?ch các d? án.

T?o m?t ?ng d?ng khách hàng m?u

  1. Trên các Tệp tr?nh đơn, đi?m đ?n M?i, sau đó b?m Dự án.
  2. Trong các Thêm d? án m?i h?p tho?i h?p, b?m vào Visual C# dư?i Các lo?i d? án, b?m ?ng d?ng Windows Forms dư?i Khuôn mẫu, sau đó b?m Ok.

    Chú ý Trong ph?ng thu tr?c quan.NET 2003, h?y nh?p vào Visual C# các d? án Thay v? Visual C#.
  3. Làm theo các bư?c sau đ? thêm hai th? hi?n c?a các SmoothProgressBar ki?m soát đ? các h?nh th?c:
    1. Trên các Công cụ tr?nh đơn, nh?p vào Ch?n kho?n m?c h?p công c?.

      Chú ý Trong ph?ng thu tr?c quan.NET 2003, h?y nh?p vào Tu? ch?nh h?p công c? Thay v? Ch?n kho?n m?c h?p công c?.
    2. B?m vào các .Các thành ph?n NET Framework tab.
    3. Nh?p vào Tr?nh duy?tvà sau đó xác đ?nh v? trí các t?p tin SmoothProgressBar.dll, mà b?n đ? t?o ? các "T?o m?t tu? ch?nh ProgressBar control"ph?n.
    4. Nh?p vào Ok. Nh?n th?y r?ng các SmoothProgressBar đi?u khi?n s? đư?c thêm vào h?p công c?.
    5. Kéo hai th? hi?n c?a các SmoothProgressBar đi?u khi?n t? h?p công c? m?c đ?nh m?u c?a d? án ?ng d?ng Windows.
  4. Kéo m?t B? đ?m th?i gian đi?u khi?n t? h?p công c? m?u.
  5. Thêm m? sau đây đ? các Đánh d?u s? ki?n c?a các B? đ?m th?i gian đi?u khi?n:
    if (this.smoothProgressBar1.Value > 0)
    {
    	this.smoothProgressBar1.Value--;
    	this.smoothProgressBar2.Value++;
    }
    else
    {
    	this.timer1.Enabled = false;
    } 
    					
  6. Kéo m?t Nút đi?u khi?n t? h?p công c? m?u.
  7. Thêm m? sau đây đ? các Nh?p vào s? ki?n c?a các Nút đi?u khi?n:
    this.smoothProgressBar1.Value = 100;
    this.smoothProgressBar2.Value = 0;
    			
    this.timer1.Interval = 1;
    this.timer1.Enabled = true; 
    					
  8. Trên các G? l?i tr?nh đơn, nh?p vào B?t đ?u đ? ch?y các d? án m?u.
  9. Nh?p vào nút. Chú ? r?ng các ch? s? hai ti?n b? hi?n th? văn b?n "ti?n b?". M?t trong nh?ng ti?n b? ch? báo hi?n th? s? ti?n b? trong m?t cách th?c ngày càng tăng, và các ch? s? khác c?a ti?n b? hi?n th? s? ti?n b? trong gi?m m?t ho?c m?t cách đ?m ngư?c.

Thu?c tính

ID c?a bài: 323116 - L?n xem xét sau cùng: 27 Tháng Tám 2011 - Xem xét l?i: 2.0
Áp d?ng
  • Microsoft Visual C# 2008 Express Edition
  • Microsoft Visual C# 2005 Express Edition
T? khóa: 
kbsweptvs2008 kbhowtomaster kbmt KB323116 KbMtvi
Máy d?ch
QUAN TRỌNG: Bài vi?t này đư?c d?ch b?ng ph?n m?m d?ch máy c?a Microsoft ch? không ph?i do con ngư?i d?ch. Microsoft cung c?p các bài vi?t do con ngư?i d?ch và c? các bài vi?t do máy d?ch đ? b?n có th? truy c?p vào t?t c? các bài vi?t trong Cơ s? Ki?n th?c c?a chúng tôi b?ng ngôn ng? c?a b?n. Tuy nhiên, bài vi?t do máy d?ch không ph?i lúc nào c?ng hoàn h?o. Lo?i bài vi?t này có th? ch?a các sai sót v? t? v?ng, cú pháp ho?c ng? pháp, gi?ng như m?t ngư?i nư?c ngoài có th? m?c sai sót khi nói ngôn ng? c?a b?n. Microsoft không ch?u trách nhi?m v? b?t k? s? thi?u chính xác, sai sót ho?c thi?t h?i nào do vi?c d?ch sai n?i dung ho?c do ho?t đ?ng s? d?ng c?a khách hàng gây ra. Microsoft c?ng thư?ng xuyên c?p nh?t ph?n m?m d?ch máy này.
Nh?p chu?t vào đây đ? xem b?n ti?ng Anh c?a bài vi?t này:323116

Cung cấp Phản hồi

 

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