在 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);
}
}
}
我是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);
}
}
}