customprog

最終的なコードの例
YourClassName クラスの変更点

csharp
コードをコピーする
// プロパティの既定値
const int m_def_Max = 100;

// プロパティ用変数の宣言
int m_Max;

public YourClassName()
{
    // 既存の初期化処理
    m_Max = m_def_Max;
}

// 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);
        }
    }
}

// Valueプロパティの修正
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; // または別のデフォルト値

いいなと思ったら応援しよう!