似乎无法更改winforms中的对象的属性C#

这是一个混乱的场景。 基本上,我试图设置一个button的颜色,当我使用setter为一个私有variables,我存储它的颜色。

首先,我有一个独立的窗口来定制东西。 当我改变button的颜色,我想改变这个窗口中的每个button。 我有它存储在我的主窗体类的静态variables。

public static frm_custom customizer; 

这是所讨论的variables的setter。

 private Color _buttonColor; public Color buttonColor { get { return this._buttonColor; } set { this.btn_input.BackColor = buttonColor; this._buttonColor = buttonColor; if (Application.OpenForms.OfType<frm_custom>().Count() == 1) { customizer.setButtonColor(buttonColor); } } } 

奇怪的是,它根本不影响颜色。 我做错什么了吗?

我做错什么了吗?

是。 你的setter只是获取现有的属性值:

 this.btn_input.BackColor = buttonColor; this._buttonColor = buttonColor; 

你打算使用value ,这是setter的隐式参数名称:

 this.btn_input.BackColor = value; this._buttonColor = value; 

(同上, if你的if块,但很难说这是如何工作,因为它不是有效的C#目前。)

作为一个侧面说明,我强烈要求你开始遵循.NET命名约定,其中包括大写字母的属性 – 所以ButtonColor而不是buttonColor