最終的なコードの例
YourClassName クラスの変更点
csharp
コードをコピーする
const int m_def_Max = 100;
int m_Max;
public YourClassName()
{
m_Max = m_def_Max;
}
public int Max
{
get { return m_Max; }
set
{
if (value <= 0)
throw new ArgumentOutOfRangeException("Maxは0より大きい値でなければなりません。");
m_Max = value;
if (m_Value > m_Max)
{
Value = m_Max;
}
if (Cpr_ProgressForm != null)
{
Cpr_ProgressForm.SetMaxValue(m_Max);
}
}
}
public int Value
{
get { return m_Value; }
set
{
int intEditValue = value;
if (value < 0)
{
intEditValue = 0;
}
else if (value > m_Max)
{
intEditValue = m_Max;
}
if (m_Value != intEditValue)
{
m_Value = intEditValue;
if (Cpr_ProgressForm != null)
{
Cpr_ProgressForm.SetValue(m_Value);
if (Cpr_ASyncProcessDelegate == null && m_AutoRedraw)
{
Cpr_ProgressForm.Refresh();
}
}
}
}
}
frmprgress クラスの変更点
csharp
コードをコピーする
public void SetMaxValue(int maxValue)
{
if (InvokeRequired)
{
Invoke(new Action<int>(SetMaxValue), maxValue);
}
else
{
ProgressBar1.Maximum = maxValue;
}
}
public void SetValue(int value)
{
if (InvokeRequired)
{
Invoke(new Action<int>(SetValue), value);
}
else
{
ProgressBar1.Value = value;
int percentage = (int)((double)value / ProgressBar1.Maximum * 100);
lblPercent1.Text = percentage.ToString() + " %";
}
}
InitializeComponent メソッドでのプログレスバーの初期設定
csharp
コードをコピーする
this.ProgressBar1.Minimum = 0;
this.ProgressBar1.Maximum = m_def_Max;