【问题标题】:C# progressbar drawstring on form load表单加载时的 C# 进度条拉绳
【发布时间】:2013-04-18 10:08:00
【问题描述】:

有没有办法在 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);                
}

提前致谢

【问题讨论】:

  • 我会尝试将Label 放在ProgressBar 之上,然后将Label.TextProgressBar.Progress 一起更新。我自己从来没有做过,所以我不能保证。

标签: c# progress-bar default drawstring form-load


【解决方案1】:

您可以设置一次性 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 用Label 覆盖进度条并将其设置在进度条前面的评论可能更符合您的需求。

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

【讨论】:

  • @ByteBlast 1 毫秒也许更好? :P
  • 进度条前面的标签很丑,因为我不能将背景设置为透明(我需要改变进度条的颜色,取决于我在哪个目录,所以没有VisualStyles)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-29
相关资源
最近更新 更多