在 StatusStrip 的 ProgressBar 上显示文本

Show Text on ProgressBar in StatusStrip

我是windows编程新手。在 C# 中,我正在使用 Visual Studio 2017。现在,我遇到了一个问题。问题是,我试图在 StatusStrip 中的 ProgressBar 中显示一些文本(进度值),但找不到合适的工作方式来做到这一点。 :-(

任何人都可以给我一些想法或解决这个问题的方法吗?我会很高兴和感谢你! 您的回答将不胜感激。 :-)

  progressBar1.CreateGraphics().DrawString(progressBar1.Value.ToString(), new Font("Arial", (float)8.25, FontStyle.Regular), Brushes.Black, new PointF(progressBar1.Width / 2 - 10, progressBar1.Height / 2 - 7));

几天前一个犹太人遇到了同样的问题 运行 这段小代码完美地完成了工作:)
this 网站

获得代码和解释

ToolStripProgressBar 组件使用 ProgressBar 来显示进度,控件不显示文本。为了能够呈现控件的文本,您需要自己绘制值。为此,您可以创建一个派生自 ToolStripProgressBar 的自定义项。然后您可以使用 NativeWindow 将自定义代码分配给控件的 WM_PAINT 消息:

using System;
using System.Windows.Forms;
using System.Windows.Forms.Design;
[ToolStripItemDesignerAvailability(ToolStripItemDesignerAvailability.All)]
public class MyToolStripProgressBar : ToolStripProgressBar
{
    public MyToolStripProgressBar() : base()
    {
        this.Control.HandleCreated += Control_HandleCreated;
    }
    private void Control_HandleCreated(object sender, EventArgs e)
    {
        var s = new ProgressBarHelper((ProgressBar)this.Control);
    }
}
public class ProgressBarHelper : NativeWindow
{
    ProgressBar c;
    public ProgressBarHelper(ProgressBar progressBar)
    {
        c = progressBar;
        this.AssignHandle(c.Handle);
    }
    protected override void WndProc(ref Message m)
    {
        base.WndProc(ref m);
        if (m.Msg == 0xF /*WM_PAINT*/)
        {
            using (var g = c.CreateGraphics())
                TextRenderer.DrawText(g, c.Value.ToString(),
                   c.Font, c.ClientRectangle, c.ForeColor);
        }
    }
}