特定の変数の値が変更されたときにボタンの表示を切り替えたいと思っています。値が変更されたときに自動的に実行される変数に何らかの代理人を添付する方法はありますか?C#で変数の値が変更された場合、どのようにコードを実行できますか?
答えて
いいえ、あなたはC#の代入演算子のオーバーロードのようなことはできません。あなたができることは、変数をプロパティに変更し、メソッドを呼び出したり、セッターでイベントを委譲したりすることです。
private string field;
public string Field {
get { return field; }
set {
if (field != value) {
field = value;
Notify();
}
}
}
これは、プロパティの変更を追跡するために(WPF DependencyProperty
システムのような)多くのフレームワークによって行われます。
これを行う方法はありません。変数は、基本的に、アプリケーションが書き込むメモリ内の場所です。
代わりにプロパティを使用します。
string myVariable;
public string MyVariable
{
get
{
return myVariable;
}
set
{
myVariable = value;
MyVariableHasBeenChanged();
}
}
private void MyVariableHasBeenChanged()
{
}
ちょっと調べてみると、変更した後で "MyVariableHasBeenChanged"を呼び出す方が良いでしょう。そうすれば、メソッドで何かを行うことができ、代入に例外がスローされた場合に対処できます。 –
明らかに優れています(そしておそらく唯一有用な方法です)。ありがとう。 – weiqure
をあなたのどちらかが(変数である)モデル内のGUIへの参照を持っており、直接setterメソッドでGUIの変更を行うか、あなたはあなたのGUIを観察します観察者を介してあなたのモデルを観察し、観測者に観察可能なモデルの発火イベントを設定させる。前者は最終的にスパゲッティコードにつながります。これは、モデルとビューの間にますます直接的なリンクを追加するため、社内のツールや簡単なプログラムにのみ使用する必要があります。
Observer pattern。ここにanother referenceがあります。
この問題の解決策としてのオブザーバーパターンのために、否定的な投票を正当化できますか? –
あなたは正しいですし、ダウン投票者は頭をぶら下げるべきです。最も単純な形式では、オブザーバが正しいパターンです。これはWPFが使用するものなので、WPFの '何が変わったのか'を伝える必要があります。私はあなたに救済を+1するでしょう。 –
Downvoteそれはリンク専用の回答だから、私は疑う。 – Blorgbeard
また、データバインディングin WPFをWindows Formsに使用することもできます。これにより、オブジェクトのプロパティーに応じてGUIの状態を変更することができます、逆の場合はです。
- 1. 変数の値が変更されたときは、どのように確認できますか?
- 2. レジスタの順序でカテゴリが決定された場合、data.tableをどのように変更できますか?
- 3. Androidでは、変数が変更されたときにどのように行動しますか?
- 4. Androidが変数を変更したときにコードを実行
- 5. セルのgetが式によって値が変更されるたびに、どのようにVBAコードを実行できますか?
- 6. 入力値がjQueryで何か変更された場合
- 7. C#の代入で変数の値が変更されないのはどのような状況ですか?
- 8. 値が変更されない場合のbackbone.jsの変更
- 9. C#コードでpowercfgの関数をどのように実行できますか?
- 10. .confが変更された場合のみapache2をリロードするか、アプリケーションコードが変更された場合に使用することができますか?
- 11. 文字列が不変の場合、なぜ次のコードがturbo C++で実行されるのですか
- 12. prePersist()で値が変更されたかどうか確認できますか?
- 13. 値が変更された場合にのみPHPでMySQLデータベースを更新
- 14. ワークフローの状態がXYZに変更された場合のみルールを実行
- 15. 値が別の値で変更された場合、SelectOneMenuでリストを変更する方法は?
- 16. この場合、td autoはどのようにサイズ変更されますか?
- 17. 最後のラジオグループが変更された場合に実行する機能
- 18. Eclipse「変数」ウィンドウで値の色が変更されました
- 19. h:selectOneMenuの値の変更をどのように実行するのですか?
- 20. iOSでシステム日付が変更された場合、どのように日付のラベルを変更できますか?
- 21. プロトタイプ関数で変更された数値変数の更新
- 22. C#変数コードを実行
- 23. オリエンテーションが変更されたときのレイアウトの変更はどのように処理されますか?
- 24. 行のIDが変更された場合、その特定の行のデータはどのように変更しますか?
- 25. LightSwitchアプリケーションと実行//行の値が変更されたとき何か
- 26. マージ - 値が変更された場合のみ更新します。
- 27. 変数が引数である場合に変数の値を関数内で変更する
- 28. TcxGridの値が変更された後、どのようにイベントハンドラを起動できますか?
- 29. スピナーが変更された場合
- 30. WinDbgのcmd行から変数の値を変更するにはどうすればよいですか?
ありがとうMehrdad。 – Rohit
これを行うための優れた共通の手法は、 'INotifyPropertyChanged'インタフェースです。 –