テキストボックスを含む特定の色の背景を持つグループボックスがあります。テキストボックスが汚れていることをユーザーが確認できるようにする方法を考えていました。おそらく、背景のグループボックスの色を変更したり、グループボックスやフォームテキストの名前に「*」を追加したりするとよいと思いました。しかし、_isDirtyのプロパティを変更するイベントを取得することさえできません。このアイデアを実装することは言うまでもありません。誰かが似たようなことをしたと確信しています。あなたが私を助けてくれることを願っています。私はC#.Net Framework 2.0を使用しています(4.0でも機能するはずですが、下位互換性があると思います)。IDEはVisualStudios10です。
テキストボックスが変更されると、_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 += "*";
}
}
誰かが私がこれをどのように行うかについて別の提案をしたり、これを行うためのより良いユーザーフレンドリーな方法を持っている場合、私は提案を受け付けています..ありがとう!
編集:答えは実際には2つの部分に分かれています!プロパティ変更イベントをWORKにするための修正は、BRAMによって行われました。背景色を変更する方法を知りたい場合は、ZARATHOSの回答をご覧ください。残念ながら、私は1つの答えしかマークできないので、メインビットが機能するようになったものにマークを付けます。