这个问题是前一个问题的进一步发展。我正在使用 C# .NET 框架 2.0,Visual Studios 10。我有一个文本编辑器,我想在表单标题中有一个脏标记,在本例中是一个简单的“ ”。如果文本框已更改,则“ ”应出现在标题中。保存文本框后,“*”应该会消失。我尝试了以下事情,但可能不正确: 1 个表单,编辑器,具有保存按钮和文本框
---- 编辑器.cs
---- 函数.cs
一个不同的文件,不是表单,Functions.cs,在保存时被调用,它执行保存(为了保持整洁,表单代码上只有按钮等,另一个文件做脏活)。
--在第二个功能文件中更改 Editor._isDirty 值 --在编辑器文件本身中更改 _isDirty 值 --在编辑器中更改 IsDirty(我无法从功能文件中弄清楚如何做到这一点)
这是相关的代码:
public static bool _isDirty = false;
public plainTextEditor()
{
InitializeComponent();
functionsProxy = new Functions();
IsDirty = false;
}
/* Property added to flag Changed _isDirty event */
public bool IsDirty
{
get { return _isDirty; }
set
{
if (_isDirty != value)
{
_isDirty = value;
OnIsDirtyChanged(IsDirty);
}
}
}
protected void OnIsDirtyChanged(bool _isDirty)
{
if (_isDirty == true)
{
//textBox1.BackColor = Color.LightCoral;
this.Text += "*";
}
else
{
this.Text = "Text Editor";
//textBox1.BackColor = SystemColors.Window;
}
}
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 == "")
{
//textBox1.BackColor = SystemColors.Window;
IsDirty = false;
}
else
{
IsDirty = true;
}
currentText = newtext;
}
}
private void btnSave_Click(object sender, EventArgs e)
{
functionsProxy.doSave(textBox1.Text);
//_isDirty = false;
IsDirty = false;
}
现在,根据我对事件和属性的了解..如果我什至更改 _isDirty 的值,应该调用并更改 OnIsDirty 对吗?无论我在哪里更改 _isDirty 的值,都说它来自不同的形式。无论如何,这就是我想要的.. * 事件的出现或消失取决于 _isDirty 是否发生变化!不知何故,它只是用来标记脏的而不是清除它。
如果可以,请提供帮助,或建议另一种方法(示例代码将是王牌!);)