あなたは一度に5つの問題を抱えています。適切な答えを書くには本が必要です(とにかく読んでみることをお勧めします)。この答えは、あなたがもっと学ぶために使うことができる要約です。
まず、を「他のフォームで更新が行われたとき」について詳しく説明する必要があります。この変更を検出する必要があります。それを行う方法は、そのフォームの仕組みに依存します。データバインディングとINotifyPropertyChanged
(Raise an event whenever a property's value changed?を参照)を使用してください。
これらの「他のフォーム」では、モデルのPropertyChanged
イベントを購読し、それを各フォームのイベントとして伝播します。適切な場合には、退会するようにしてください。フォームのPropertyChanged
イベントハンドラでは、そのフォームに固有のイベント(たとえば、MyModelChanged
)を発生させます。
これで、イベントを購読することで、イベントを関係者に通知できるようになりました。このような
何か:
var yourEditForm = new YourEditForm();
yourEditForm.MyModelChanged += this.YourEditForm_MyModelChanged;
yourEditForm.Show();
は今、あなたは、このコードを配置場所はかなり重要です。複数のフォームを使って作業したい場合、アプリケーションに関連するすべてのフォームとそのイベントを知っているすべてのフォームとイベントを知っているすべてのフォームとイベントを知っている何らかの「コントローラ」(またはその名前を付けてください)が必要です。
あなたのコントローラであなたが今、上記のコードと、このイベントハンドラ持っているので:そのイベントハンドラで今すぐ
private void YourEditForm_MyModelChanged(object sender, EventArgs e)
{
}
を、あなたは適切な名前せることができますForm1
そのデータをリロードします。これを行う公開方法を公開すると、公開方法を公開できます。
public void RefreshGrid()
{
cont.etudiant1.Load();
etudiant1DataGridView.DataSource = cont.etudiant1.Local;
}
「リフレッシュ」があります。上記のイベントハンドラでform1.RefreshGrid()
に電話をかけることができます。
これはすべてかなりハッキングされていることに注意してください。 WinFormsのデータバインディングについてのチュートリアルまたは2つを読んで、これを適切に処理できるようにしてください。手動で行うことは、維持するのが苦痛になるためです。
MSDNでData Binding and Windows FormsとChange Notification in Windows Forms Data Bindingを読むことから始められます。
「イベント」について聞いたことがありますか?これらは、WinFormsの基本的なビルディングブロックであり、アプリケーションで発生することを伝播するために使用されます。 – CodeCaster
オープンフォームの更新されたデータを再読み込みする方法はわかりません。 –
あなたの意見です! –