c# - 如何更改复选框上的支票图像

标签 c# .net winforms checkbox

它有文本,图像,然后是复选框,

我想使用更好的图像进行检查,但找不到更改检查和未检查图像的方法

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 的任何人,有一个替代解决方案:

  1. 添加一个 ImageList 控件并用图像填充它以反射(reflect)选中/未选中状态。
  2. 将您的 Checkbox 控件的 Appearance 属性设置为 Button(以摆脱标准的 CheckBox 图标)
  3. 将其“FlatStyle”属性设置为Flat(这样控件看起来就不像一个按钮)。
    注意:您可能还想检查它的 FlatAppearance 属性组。即CheckedBackColorMouseDownBackColorMouseOverBackColor,即将它们都设置为Control值。
  4. Checkbox 控件的 ImageList 属性设置为您的 ImageList 控件的名称。
  5. 设置 Checkbox 控件的 ImageindexImageAlign 属性以反射(reflect)其当前状态。
  6. 最后也是最重要的是设置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/

相关文章:

c# - 在 C# 中检索 SQL Server 数据库信息

c# - 如何通过正则表达式识别文本中的段落?

c# - DataGridView 滚动事件(和 ScrollEventType.EndScroll)

c# - IEnumerable 的可能多重枚举 - 如果我想要多重枚举怎么办?

c# - IronPython:从主机应用程序添加引用

c# - 在 .NET 环境中使用 REST API 的最常见方法是什么? C#、JS 还是其他语言?

.net - 如果使用 Linq 和 EF,SP 是否多余(最佳实践)

c# - 如何加 express 归搜索功能?

.net - .NET 中 API 突破性更改的权威指南

c# - 表格开始最小化