我想为Checkbox文本设置2种颜色:
true
我想将ON设置为绿色,将OFF设置为红色
由于
修改
是的,它在Form1.cs
中while($obj = mysql_fetch_object($page)) {
// Code
}
在Form1.Designer.cs中有:
if (this.checkBox4.Checked) {
this.checkBox4.ForeColor = Color.Green;
this.checkBox4.Text = "Max Parameters on set ON";
}
else {
this.checkBox4.ForeColor = Color.Red;
this.checkBox4.Text = "Max Parameters on set OFF";
}
答案 0 :(得分:1)
要在WinForms控件中使用多色文本,您需要自己绘制控件。以下代码是从VB.NET自动翻译的,但应该可以正常工作。您需要将此作为新类添加到项目中并进行编译。然后,您应该在Designer工具箱中看到一个新控件。您可能需要为控件将AutoSize
设置为false并调整宽度。
结果:
它需要一些整理,但你应该明白这一点。
using System.Windows.Forms;
using System.Drawing;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Diagnostics;
public class MultiColorCheckbox : CheckBox
{
public MultiColorCheckbox()
: base()
{
SetStyle(ControlStyles.AllPaintingInWmPaint, true);
SetStyle(ControlStyles.UserPaint, true);
this.AutoSize = false;
this.Width = 50;
}
protected override void OnPaint(PaintEventArgs pevent)
{
//Draw background
using (SolidBrush b = new SolidBrush(this.BackColor))
{
pevent.Graphics.FillRectangle(b, this.ClientRectangle);
}
//Draw the checkbox
ControlPaint.DrawCheckBox(pevent.Graphics, new Rectangle(1, 1, 16, 16), this.Checked ? ButtonState.Checked : ButtonState.Normal);
//Measure the base string
Font f = this.Font;
SizeF s1 = pevent.Graphics.MeasureString("Max Parameters on set ", f);
Rectangle r1 = new Rectangle(18, 1, (int)s1.Width, this.ClientRectangle.Height - 2);
//Create string format
using (StringFormat sf = new StringFormat())
{
sf.LineAlignment = StringAlignment.Center;
sf.FormatFlags = StringFormatFlags.NoWrap;
sf.Trimming = StringTrimming.None;
//Draw base string
pevent.Graphics.DrawString("Max Parameters on set ", f, Brushes.Black, r1, sf);
//Draw secondary string, based on check state
if (this.Checked)
{
SizeF s2 = pevent.Graphics.MeasureString("ON", f);
Rectangle r2 = new Rectangle((int)r1.Right, 1, (int)s2.Width, this.ClientRectangle.Height - 2);
pevent.Graphics.DrawString("ON", f, Brushes.Green, r2, sf);
}
else
{
SizeF s2 = pevent.Graphics.MeasureString("OFF", f);
Rectangle r2 = new Rectangle((int)r1.Right, 1, (int)s2.Width, this.ClientRectangle.Height - 2);
pevent.Graphics.DrawString("OFF", f, Brushes.Red, r2, sf);
}
}
}
}
答案 1 :(得分:0)
这取决于你把代码放在哪里。
如果您将该代码放在CheckBox.CheckedChanged
或CheckBox.CheckStateChanged
个事件上,您可以得到您想要的结果。
答案 2 :(得分:0)
确保它在checkbox4_CheckedChanged
事件中。这应该是它的样子:
private void checkBox4_CheckedChanged(object sender, EventArgs e)
{
if (this.checkBox4.Checked == true)
{
this.checkBox4.ForeColor = Color.Green;
this.checkBox4.Text = "Max Parameters on set ON";
}
else if (this.checkBox4.Checked == false)
{
this.checkBox4.ForeColor = Color.Red;
this.checkBox4.Text = "Max Parameters on set OFF";
}
}
您可以双击设计视图中的复选框,在代码视图中生成事件。
答案 3 :(得分:0)
看看你是否想要复选框中有多色文本你可能有两个选项:
1.如果使用asp.net pasa html / css表单中的颜色值,它会(很可能)
如果你想在winforms中使用aame,那么对你来说这是一个坏消息。您将使用扩展复选框组件并使用GDI +重绘。在网上搜索你会得到一些关于c#
使用复选框和rtfbox创建新的用户控件。或者一个复选框和2个标签并智能地对齐它们。