現在オフラインです。再接続するためにインターネットの接続を待っています

視覚 C# の円滑な進行状況バーを作成する方法

重要: このサポート技術情報 (以下「KB」) は、翻訳者による翻訳の代わりに、マイクロソフト機械翻訳システムによって翻訳されたものです。マイクロソフトは、お客様に、マイクロソフトが提供している全ての KB を日本語でご利用いただけるように、翻訳者による翻訳 KB に加え機械翻訳 KB も提供しています。しかしながら、機械翻訳の品質は翻訳者による翻訳ほど十分ではありません。誤訳や、文法、言葉使い、その他、たとえば日本語を母国語としない方が日本語を話すときに間違えるようなミスを含んでいる可能性があります。マイクロソフトは、機械翻訳の品質、及び KB の内容の誤訳やお客様が KB を利用されたことによって生じた直接または間接的な問題や損害については、いかなる責任も負わないものとします。マイクロソフトは、機械翻訳システムの改善を継続的に行っています。

英語版 KB:323116
マイクロソフトの Visual Basic では。この資料のバージョンを NET を参照してください。 323088.
概要
この資料で、簡単なカスタムを作成する方法を示しています。 ユーザー コントロール 滑らかなを作成するのにスクロール プログレス バー コントロールです。

以前のバージョンのでは プログレス バー Microsoft Windows コモン コントロール ActiveX コントロールでは、2 つの異なるビューで進行状況を表示することができます提供されるバージョンなどのコントロールです。これらのビューを制御するを使用して、 スクロール プロパティは、標準および滑らかな設定が含まれています。スムーズ スクロールの進行状況を表す色を純色のブロックを生成および標準スクロール分割が表示され、一連の小さなブロックまたは四角形で構成されています。

は、 プログレス バー Microsoft Visual C# に含まれているコントロールは、標準的な設定だけをサポートしています。

この資料のサンプル コードは、次のプロパティをサポートするコントロールを作成する方法を示しています。
  • 最小値.このプロパティを取得または進行状況の有効な値の範囲は下位の値を設定します。このプロパティの既定値はゼロ (0); です。負の値にこのプロパティを設定することはできません。
  • 最大値.このプロパティを取得または進行状況の有効な値の範囲の上限値を設定します。このプロパティの既定値は 100 です。
  • .このプロパティを取得するか現在の進行状況のレベルを設定します。値が範囲内にする必要がありますが、 最小値 および 最大値 プロパティを定義します。
  • ProgressBarColor.このプロパティを取得または、進行状況バーの色を設定します。

プログレス バーのカスタム コントロールを作成します。

  1. Visual C# で、新しい Windows コントロール ライブラリ プロジェクトを作成するのには、次の手順を実行します。
    1. Microsoft Visual Studio を起動します。
    2. で、 ファイル メニューのポイント 新しい、し プロジェクト.
    3. で、 新しいプロジェクト ダイアログ ボックス、クリックして Visual C# 下にあります。 [プロジェクトの種類、し Windows フォーム コントロール ライブラリ 下にあります。 テンプレート.

      メモ Visual Studio で。NET 2003、クリックしてください Visual C# プロジェクト 代わりに Visual C#.
    4. で、 名前 ボックスの種類 SmoothProgressBar、し [OK].
    5. プロジェクト エクスプ ローラーで、[UserControl1.cs を既定クラス モジュールには、SmoothProgressBar.cs の名前を変更します。
    6. [プロパティ] ウィンドウには、 ユーザー コントロール オブジェクトに、変更を 名前 プロパティ UserControl1 するには SmoothProgressBar.
  2. この時点では、通常からそのコントロールのクラスを継承し、既存のコントロールを拡張するのには、追加の機能を追加します。ただし、 プログレス バー クラスです。 シール 継承はできません。したがって、コントロールを最初から作成する必要があります。

    UserControl から派生したクラスで、SmoothProgressBar.cs ファイルには、次のコードを追加します。

    メモ Visual Studio で。NET 2003、だけで、「Windows フォーム デザイナーで生成されたコード」セクションの後の派生した UserControl クラスをクラス モジュールにコードを追加します。
    int min = 0;	// Minimum value for progress rangeint max = 100;	// Maximum value for progress rangeint val = 0;		// Current progressColor BarColor = Color.Blue;		// Color of progress meterprotected 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 フォーム アプリケーション 下にあります。 テンプレート、し [OK].

    メモ Visual Studio で。NET 2003、クリックしてください Visual C# プロジェクト 代わりに Visual C#.
  3. 2 つのインスタンスを追加するのには、次の手順に従って、 SmoothProgressBar フォームを制御します。
    1. で、 ツール メニューをクリックして [ツールボックス アイテムを選択します。.

      メモ Visual Studio で。NET 2003、クリックしてください [ツールボックスをカスタマイズします。 代わりに [ツールボックス アイテムを選択します。.
    2. クリックして、 .NET フレームワーク コンポーネント タブします。
    3. クリックしてください。 参照、し、作成した SmoothProgressBar.dll ファイルを探します、"プログレス バーのカスタム コントロールを作成します。」に記載します。
    4. クリックしてください。 [OK].注意してください、 SmoothProgressBar コントロールがツールボックスに追加されます。
    5. 2 つのインスタンスをドラッグして、 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. ボタンをクリックします。2 つの進行状況インジケーターが「作業中」というテキストを表示することに注意してください。1 つの進行状況インジケーターが増加の方法では、進行状況を表示し、他の進行状況インジケーターが減少またはカウント ダウン方法で進行状況を表示します。

警告: この記事は自動翻訳されています

プロパティ

文書番号:323116 - 最終更新日: 07/27/2011 10:54:00 - リビジョン: 6.0

  • kbhowtomaster kbsweptvs2008 kbmt KB323116 KbMtja
フィードバック