c# - Richtextbox 多种背景颜色
问题描述
如果我们可以从另一个窗口应用程序中这样调用它,我就看到了关于拥有RichTextBox
类似“进度条”的这件很酷的事情,而我也在尝试做同样的事情。
我正在查看这些方法,但我无法将它们中的任何一个应用于我正在寻找的东西,我试图看看是否有类似的问题,但我没有那么幸运。
我怎样才能达到相同的结果?
根据 Jimi 告诉我的内容,我将解释我需要什么。标签内的字符串 rappresents 一个计时器,它必须在到达终点时将颜色更改为红色,在此之前,就像在 10 分钟时我希望它是黄色的,使用它就像一个警报。
该方法的编写方式不允许我选择我想要的颜色。之后,当计时器被按钮停止时,我希望标签重新绘制自身并将其变为空白而没有任何颜色,看起来像“文本框”。
解决方案
这是用作 ProgressBar 的标签。
只是一个示例(非常原始,我可以利用我的时间做些什么),但它展示了如何绘制提供Paint()事件的 Control 的表面。
它使用Timer类增加值并通过调用Label.Invalidate()方法生成进度条效果,该方法引发 Label 的 Paint 事件,执行label1_Paint()
处理程序中的任何代码。
如果要对其进行测试,请将此代码粘贴到包含button1
用于启动计时器的按钮 () 和label1
生成图形效果的标签 () 的表单中。然后将这
两个事件分配Click()
给Button
和。Paint()
Label
这是它的样子:
Timer timer;
private bool TimerStarted = false;
private float ProgressMaxValue = 100;
private float Progress = 0;
private int seconds = 0;
private int cents = 0;
private void button1_Click(object sender, EventArgs e)
{
if (TimerStarted) { TimerStop(); return; }
timer = new Timer();
timer.Interval = 20;
Progress = 0;
seconds = 0;
cents = 0;
timer.Tick += (s, ev) => {
++Progress;
if (Progress > ProgressMaxValue) { TimerStop(); return; }
cents += (timer.Interval / 5);
if (cents > 99) { cents = 0; ++seconds; }
this.label1.Invalidate();
};
TimerStarted = true;
timer.Start();
}
private void TimerStop()
{
timer.Stop();
timer.Dispose();
TimerStarted = false;
}
private void label1_Paint(object sender, PaintEventArgs e)
{
StringFormat format = new StringFormat() {
Alignment = StringAlignment.Center,
LineAlignment = StringAlignment.Center
};
e.Graphics.Clear(this.label1.BackColor);
Rectangle rect = label1.ClientRectangle;
rect.Inflate(-1, -1);
e.Graphics.DrawRectangle(Pens.LimeGreen, rect);
RectangleF ProgressBar = new RectangleF(
new PointF(3, 3),
new SizeF((((float)rect.Width - 3) / ProgressMaxValue) * Progress, rect.Height - 4));
e.Graphics.FillRectangle(Brushes.YellowGreen, ProgressBar);
e.Graphics.DrawString($"0.{seconds.ToString("D2")}.{cents.ToString("D2")}", label1.Font, Brushes.White, rect, format);
}
推荐阅读
- php - 如何在php中将单词转录成方程式
- kotlin - 无法在 kotlin 多平台项目中导入依赖项
- llvm - 使用 llvm 将函数/全局变量链接到特定地址
- configuration - Prometheus 的使用 scrape_timeout
- python - 如何为特定集群运行线性回归
- list - Magento 2 - How to have 2 separates phtml to handle products list and products grid?
- swift - 在数据库中创建新数据后更新 URLSession
- linux - (linux) gzip 失败,设备上没有剩余空间
- sql - 为文件存储和搜索选择正确的数据库技术
- vector - Rust 通用向量
>