需要有一个ProgressBar(不是Marqee风格)来回移动

时间:2013-04-23 12:43:19

标签: winforms progress-bar

我正在使用ProgressBar,它可以是Continuous或Blocks样式(我无法在我的应用程序中启用视觉样式)。

我通过一步一步地推进工作

代码就像这样(在 msdn 上查看):

private Timer timer = new Timer();
void progressbar1_visibleChanged(object sender, EventArgs e)
{
    var progressb = sender as ProgressBar;
    if (progressb != null && progressb.Visible == true)
    {
        InitializeProgress();
    }
}    

private void InitializeProgress()
{
    progressBar1.Value = 0;
    timer.Interval = 50;
    timer.Tick += new EventHandler(IncreaseProgressBar);
    timer.Start();
}

private void IncreaseProgressBar(object sender, EventArgs e)
{
    if (progressBar1.Value >= progressBar1.Maximum)
    {
        progressBar1.Value = 0;    
    }

    progressBar1.Increment(1);

 }

(并且显示进度条\从执行不同操作的不同 worker 隐藏)

然而,它看起来很难看,我希望它从左到右,从右到左移动。

我怎样才能做到这一点?

非常感谢

1 个答案:

答案 0 :(得分:1)

你需要Override CurrentCulture for WinForms control从右到左的语言(例如希伯来语 - “他”或“he-IL”)这有点棘手,因为这只适用于线程(而不是例如表格或控件)。

然后将进度条控件属性“RightToLeft”设置为“Yes”,将“RightToLeftLayout”属性设置为“True”。
现在您的进度条应该转到RTL 。如果它没有或改为RTL文化比它给出的伤害更多,我唯一能看到的选择是为作业创建一个自定义控件。

希望这有帮助!