You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在运行时修改System.Windows.Forms.UserControl的BackColor属性?

如何修改自定义UserControl的背景色?

我已经能在运行时修改Label等控件的背景色、文本颜色,但尝试修改主UserControl(下图选中的控件)的颜色时出现错误:

property or indexer control.DefaultBackColor cannot be assigned to -- it is read-only

UPDATE-1: 图中仅用于示意我要修改BackColor,但当我使用代码InfoBox.BackColor = System.Drawing.Color.FromArgb(255, 214, 164, 143);时,又出现另一个错误:

an object reference is required to access non-static member

请问该如何修改它的颜色?
选中的主UserControl示意


嘿,咱们拆解这两个问题来解决:

1. 关于DefaultBackColor只读的问题

DefaultBackColor是控件的默认背景色属性,它的设计就是只读的,用来存储控件的初始默认颜色值,你没法直接给它赋值。真正用来修改控件显示背景色的是BackColor属性,别搞错对象啦~

2. 关于“需要对象引用访问非静态成员”的问题

这个报错的核心原因是你用错了访问方式:

  • 如果你写的InfoBox是你的UserControl的类名,那直接通过类名访问BackColor肯定不行——因为BackColor是非静态属性,必须通过类的实例对象来调用。
  • 举个例子:如果你的窗体上已经拖放了一个InfoBox的实例,它的Name属性是infoBox1,那正确的代码应该是:
    infoBox1.BackColor = System.Drawing.Color.FromArgb(255, 214, 164, 143);
    
  • 要是你是在InfoBox这个控件的内部代码里修改自身的背景色,那直接用this指代当前实例就行:
    this.BackColor = System.Drawing.Color.FromArgb(255, 214, 164, 143);
    

额外提醒

如果修改完BackColor还是看不到效果,你得检查一下UserControl内部有没有覆盖整个区域的控件(比如占满空间的Panel),要是有的话,把内部控件的BackColor设为Transparent,这样UserControl的背景色才能显示出来。

内容的提问来源于stack exchange,提问作者skm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:35:21