它有文本,图像,然后是复选框,
我想使用更好的图像进行检查,但找不到更改检查和未检查图像的方法
this.checkBox1.CheckAlign = System.Drawing.ContentAlignment.MiddleRight;
this.checkBox1.Checked = true;
this.checkBox1.CheckState = System.Windows.Forms.CheckState.Checked;
this.checkBox1.Image = global::ClientExam.Properties.Resources.action32;
this.checkBox1.Location = new System.Drawing.Point(145, 140);
this.checkBox1.Name = "checkBox1";
this.checkBox1.Size = new System.Drawing.Size(273, 127);
this.checkBox1.TabIndex = 0;
this.checkBox1.Text = "checkBox1";
this.checkBox1.TextImageRelation = System.Windows.Forms.TextImageRelation.TextBeforeImage;
this.checkBox1.UseVisualStyleBackColor = true;
有人知道不需要我自己编写控件的吗?
最佳答案
对于不想覆盖 OnPaint 的任何人,有一个替代解决方案:
- 添加一个
ImageList
控件并用图像填充它以反射(reflect)选中/未选中状态。 - 将您的
Checkbox
控件的Appearance
属性设置为Button
(以摆脱标准的 CheckBox 图标) - 将其“
FlatStyle
”属性设置为Flat
(这样控件看起来就不像一个按钮)。
注意:您可能还想检查它的FlatAppearance
属性组。即CheckedBackColor
、MouseDownBackColor
、MouseOverBackColor
,即将它们都设置为Control
值。 - 将
Checkbox
控件的ImageList
属性设置为您的ImageList
控件的名称。 - 设置
Checkbox
控件的Imageindex
和ImageAlign
属性以反射(reflect)其当前状态。 - 最后也是最重要的是设置
Checkbox
控件的TextImageRelation
属性(这个值不会让文本和图像重叠,除非您希望它们重叠)。 IE。ImageBeforetext
值表示常见的 CheckBox 图标位置。
现在唯一剩下要做的就是在状态改变时改变图像,像这样:
private void chkMyCheckBoxWithAnImage_CheckedChanged(object sender, EventArgs e)
{
if (chkMyCheckBoxWithAnImage.Checked)
chkMyCheckBoxWithAnImage.ImageIndex = 1;
else
chkMyCheckBoxWithAnImage.ImageIndex = 0;
}
关于c# - 如何更改复选框上的支票图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15813869/