0

有没有办法在 C# 的进度条上编写默认文本?

这在 Form_Load 中不起作用,但在单击按钮时可以正常工作...

using (Graphics gr = progressBar1.CreateGraphics())
{
    StringFormat sf = new StringFormat(StringFormatFlags.NoWrap);
    sf.Alignment = StringAlignment.Center;
    gr.DrawString("hello world", 
                  new Font("Arial", 10.0f, FontStyle.Regular),
                  new SolidBrush(Color.Black), 
                  progressBar1.ClientRectangle, 
                  sf);                
}

提前致谢

4

1 回答 1

0

您可以设置一次性 Timer 事件来执行此操作作为一个选项。

Timer t = new Timer();

Form_Load()
{
    t.Interval = 1000;
    t.Start();
}

static void t_Elapsed(object sender, ElapsedEventArgs e)
{
    //One time event
    t.Stop();
    using (Graphics gr = progressBar1.CreateGraphics())
    {
        StringFormat sf = new StringFormat(StringFormatFlags.NoWrap);
        sf.Alignment = StringAlignment.Center;
        gr.DrawString("hello world", 
            new Font("Arial", 10.0f, FontStyle.Regular),
            new SolidBrush(Color.Black), 
            progressBar1.ClientRectangle, 
            sf);                
    }
}

对此有一点说明:

随着 的ProgressBar.Value改变;图形将ProgressBar更改并覆盖您绘制的文本。Nolonar 用 a 覆盖 Progressbar 并将其Label设置在 ProgressBar 前面的注释可能更符合您的需要。

否则,您必须处理ProgressBar图形更改时的重绘。

于 2013-04-18T10:16:52.560 回答