첨부 실행 코드는 나눔고딕코딩 폰트를 사용합니다.
728x90
반응형
728x170
using System;
using System.Windows.Threading;

using DevExpress.Services;
using DevExpress.Xpf.Editors;

/// <summary>
/// 테스트 진행 지시자 서비스
/// </summary>
public class TestProgressIndicatorService : IProgressIndicationService
{
    //////////////////////////////////////////////////////////////////////////////////////////////////// Field
    ////////////////////////////////////////////////////////////////////////////////////////// Private

    #region Field

    /// <summary>
    /// 진행 바 에디터
    /// </summary>
    private ProgressBarEdit progressBarEdit;

    #endregion

    //////////////////////////////////////////////////////////////////////////////////////////////////// Property
    ////////////////////////////////////////////////////////////////////////////////////////// Public

    #region 지시자 - Indicator

    /// <summary>
    /// 지시자
    /// </summary>
    public ProgressBarEdit Indicator
    {
        get
        {
            return this.progressBarEdit;
        }
        set
        {
            this.progressBarEdit = value;
        }
    }

    #endregion

    //////////////////////////////////////////////////////////////////////////////////////////////////// Constructor
    ////////////////////////////////////////////////////////////////////////////////////////// Public

    #region 생성자 - TestProgressIndicatorService(serviceProvider, progressBarEdit)

    /// <summary>
    /// 생성자
    /// </summary>
    /// <param name="serviceProvider">서비스 제공자</param>
    /// <param name="progressBarEdit">진행 바 에디터</param>
    public TestProgressIndicatorService(IServiceProvider serviceProvider, ProgressBarEdit progressBarEdit)
    {
        this.progressBarEdit = progressBarEdit;
    }

    #endregion
        
    //////////////////////////////////////////////////////////////////////////////////////////////////// Method
    ////////////////////////////////////////////////////////////////////////////////////////// Public

    // IProgressIndicationService
    #region 시작하기 - Begin(displayName, minimumProgress, maximumProgress, currentProgress)

    /// <summary>
    /// 시작하기
    /// </summary>
    /// <param name="displayName">디스플레이명</param>
    /// <param name="minimumProgress">최소 진행</param>
    /// <param name="maximumProgress">최대 진행</param>
    /// <param name="currentProgress">현재 진행</param>
    public void Begin(string displayName, int minimumProgress, int maximumProgress, int currentProgress)
    {
        this.progressBarEdit.Minimum    = minimumProgress;
        this.progressBarEdit.Maximum    = maximumProgress;
        this.progressBarEdit.EditValue  = currentProgress;
        this.progressBarEdit.Visibility = System.Windows.Visibility.Visible;

        Refresh();
    }

    #endregion

    // IProgressIndicationService

    #region 종료하기 - End()

    /// <summary>
    /// 종료하기
    /// </summary>
    public void End()
    {
        this.progressBarEdit.Visibility = System.Windows.Visibility.Collapsed;

        Refresh();
    }

    #endregion

    // IProgressIndicationService
    #region 진행 설정하기 - SetProgress(currentProgress)

    /// <summary>
    /// 진행 설정하기
    /// </summary>
    /// <param name="currentProgress">현재 진행</param>
    public void SetProgress(int currentProgress)
    {
        this.progressBarEdit.EditValue = currentProgress;

        Refresh();
    }

    #endregion

    ////////////////////////////////////////////////////////////////////////////////////////// Private

    #region 갱신하기 - Refresh()

    /// <summary>
    /// 갱신하기
    /// </summary>
    private void Refresh()
    {
        Action action = delegate() { };

        this.progressBarEdit.Dispatcher.Invoke(DispatcherPriority.Render, action);
    }

    #endregion
}
728x90
반응형
그리드형(광고전용)
Posted by icodebroker

댓글을 달아 주세요