可以将 2 种颜色设置为复选框文本吗?
Set 2 colors to a Checkbox text possible?
我想为复选框文本设置 2 种颜色:
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";
}
我想将 ON 设置为绿色,OFF 设置为红色
谢谢
编辑:
是的,它在 Form1.cs
private void checkBox4_CheckedChanged(object sender, EventArgs e)
{
byte[] buffer;
if (this.checkBox4.Checked)
{
this.checkBox4.ForeColor = Color.Green;
this.checkBox4.Text = "Max Parameters Points on set ON";
buffer = new byte[] { 0x90, 0xc3, 0, 12 };
PS3.SetMemory(0x53e088, buffer);
}
else
{
this.checkBox4.ForeColor = Color.Red;
this.checkBox4.Text = "Max Parameters Points on set OFF";
buffer = new byte[] { 0x90, 0x83, 0, 12 };
PS3.SetMemory(0x53e088, buffer);
}
}
并且在 Form1.Designer.cs 中有:
// checkBox4
//
this.checkBox4.AutoSize = true;
this.checkBox4.Location = new System.Drawing.Point(14, 109);
this.checkBox4.Name = "checkBox4";
this.checkBox4.Size = new System.Drawing.Size(165, 17);
this.checkBox4.TabIndex = 2;
this.checkBox4.Text = "Max Parameters points on set";
this.checkBox4.UseVisualStyleBackColor = true;
this.checkBox4.CheckedChanged += new System.EventHandler(this.checkBox4_CheckedChanged;
这取决于你把代码放在哪里。
如果将该代码放在 CheckBox.CheckedChanged
或 CheckBox.CheckStateChanged
事件上,您可以获得想要的结果。
确保它在您的 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";
}
}
您可以在设计视图中双击复选框以在代码视图中生成事件。
看看你是否想在复选框中使用彩色文本,你可能有 2 个选项:
1.If 使用 asp.net pasa html/css 形式的颜色值,它会做(很可能)
如果您想要 winforms 中的 aame 东西,那么有一个坏消息要告诉您。您将使用 GDI+ 扩展复选框组件并重绘。在网上搜索你会得到一些关于c#自定义复选框的文章
创建一个带有复选框和 rtfbox 的新用户控件。或者一个复选框和 2 个标签并智能对齐它们。
为了在 WinForms 控件中使用多色文本,您需要自己绘制控件。以下代码是从 VB.NET 自动翻译而来的,但应该可以工作。您需要将它作为一个新的 class 添加到您的项目中并进行编译。然后您应该会在设计器工具箱中看到一个新控件。您可能需要将控件的 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);
}
}
}
}
我想为复选框文本设置 2 种颜色:
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";
}
我想将 ON 设置为绿色,OFF 设置为红色
谢谢
编辑:
是的,它在 Form1.cs
private void checkBox4_CheckedChanged(object sender, EventArgs e)
{
byte[] buffer;
if (this.checkBox4.Checked)
{
this.checkBox4.ForeColor = Color.Green;
this.checkBox4.Text = "Max Parameters Points on set ON";
buffer = new byte[] { 0x90, 0xc3, 0, 12 };
PS3.SetMemory(0x53e088, buffer);
}
else
{
this.checkBox4.ForeColor = Color.Red;
this.checkBox4.Text = "Max Parameters Points on set OFF";
buffer = new byte[] { 0x90, 0x83, 0, 12 };
PS3.SetMemory(0x53e088, buffer);
}
}
并且在 Form1.Designer.cs 中有:
// checkBox4
//
this.checkBox4.AutoSize = true;
this.checkBox4.Location = new System.Drawing.Point(14, 109);
this.checkBox4.Name = "checkBox4";
this.checkBox4.Size = new System.Drawing.Size(165, 17);
this.checkBox4.TabIndex = 2;
this.checkBox4.Text = "Max Parameters points on set";
this.checkBox4.UseVisualStyleBackColor = true;
this.checkBox4.CheckedChanged += new System.EventHandler(this.checkBox4_CheckedChanged;
这取决于你把代码放在哪里。
如果将该代码放在 CheckBox.CheckedChanged
或 CheckBox.CheckStateChanged
事件上,您可以获得想要的结果。
确保它在您的 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";
}
}
您可以在设计视图中双击复选框以在代码视图中生成事件。
看看你是否想在复选框中使用彩色文本,你可能有 2 个选项:
1.If 使用 asp.net pasa html/css 形式的颜色值,它会做(很可能)
如果您想要 winforms 中的 aame 东西,那么有一个坏消息要告诉您。您将使用 GDI+ 扩展复选框组件并重绘。在网上搜索你会得到一些关于c#自定义复选框的文章
创建一个带有复选框和 rtfbox 的新用户控件。或者一个复选框和 2 个标签并智能对齐它们。
为了在 WinForms 控件中使用多色文本,您需要自己绘制控件。以下代码是从 VB.NET 自动翻译而来的,但应该可以工作。您需要将它作为一个新的 class 添加到您的项目中并进行编译。然后您应该会在设计器工具箱中看到一个新控件。您可能需要将控件的 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);
}
}
}
}