我有一个带有某种颜色背景的组框,其中包含一个文本框。我在想办法帮助用户看到文本框很脏,并认为改变背景组框颜色和/或在组框和/或表单文本的名称中添加“*”会很好。但是我什至无法更改_isDirty 的属性。更不用说实现这个想法了。我确信有人做过类似的事情,希望你能帮助我。我正在使用 C# .Net framework 2.0(它也应该在 4.0 中工作,但我相信这是向后兼容的)。IDE 是 Visual Studios 10。
这个想法是当文本框改变时,_isDirty "flag"/"property" 将被改变,以及它何时被保存:
_isDirty = true 当文本框被改变时
_isDirty = false 保存文本框时
这就是我目前所拥有的......虽然我尝试了不同的东西,包括 INotify 这根本不适合我......
public static bool _isDirty = false;
private void textBox1_TextChanged(object sender, EventArgs e)
{
string newtext = textBox1.Text;
if (currentText != newtext)
{
// This solves the problem of initial text being tagged as changed text
if (currentText == "")
{
_isDirty = false;
}
else
{
//OnIsDirtyChanged();
_isDirty = true; //might have to change with the dirty marker
}
currentText = newtext;
}
}
public bool IsDirty
{
get { return _isDirty; }
set
{
if (_isDirty != value)
{
_isDirty = value;
OnIsDirtyChanged(_isDirty);
}
}
}
protected void OnIsDirtyChanged(bool _isDirty)
{
if (_isDirty == true)
{
this.Text += "*";
}
}
如果有人对我的处理方式有不同的建议,或者有更好的用户友好方式,我愿意接受建议。谢谢!
编辑:答案实际上分为两部分!BRAM 给出了使属性更改事件有效的更正。如果您想知道如何更改背景颜色,请查看 ZARATHOS 的答案。不幸的是,我只能标记一个答案,因此要标记使主要部分起作用的答案。