HN *_*ner 2 .net c# statusstrip winforms progress-bar
我是Windows 编程新手。在 C# 中,我使用 Visual Studio 2017。现在,我遇到了一个问题。问题是,我试图在 中显示一些文本(进度值),ProgressBar
但StatusStrip
找不到正确的工作方法来做到这一点。:-(
任何人都可以为我提供一些想法或解决方案来解决这个问题吗?我会很高兴并感谢你!您的回答将不胜感激。:-)
ToolStripProgressBar
组件使用 aProgressBar
显示进度,控件不显示文本。为了能够呈现用于控制的文本,您需要自己绘制该值。为此,您可以创建一个派生自 的自定义项目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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4407 次 |
最近记录: |