Programming/C# - Window

C#/ 프로그레스 바(progress bar) 사용

esoog Polaris 2023. 12. 2. 21:48
반응형

# 상태라인 표시 함수

// 프로그레스바 winform ui 스레드 처리
public void UpdateProgressBar(int value)
{
    if (progressBar1.InvokeRequired)
    {
        progressBar1.Invoke(new Action<int>(UpdateProgressBar), value);
    }
    else
    {
        progressBar1.Value = value;
    }
}

 

* winform UI 특성 상의 크로스 스레드 문제를 해결하기 위해 .InvokeRequired 함수를 사용.

 

 

 

 

# 함수를 사용하여 프로그레스바 사용하기

private void UseProgressBar_Click(object sender, EventArgs e)
{
    // 프로그레스바가 우측하단에 위치하도록 설정
    frmProgressbar progressbar = new frmProgressbar();
    progressbar.StartPosition = FormStartPosition.Manual;
    Screen screen = Screen.PrimaryScreen;
    int x = screen.WorkingArea.Right - progressbar.Width - 5;  // 5은 여백
    int y = screen.WorkingArea.Bottom - progressbar.Height - 5; // 5은 여백
    progressbar.Location = new Point(x, y);
    progressbar.Show();
    
    progressbar.UpdateProgressBar(0);
    progressbar.UpdateProgressBar(30);
    progressbar.UpdateProgressBar(60);
    progressbar.UpdateProgressBar(100);

    progressbar.Close();
}

 

728x90