私は2つの勝利フォームf1とf2を持っています。 f1、f1 hide、f2 showでデータグリッドビューの行ヘッダーをクリックすると、データがf1からf2に渡されます。ユーザーがf2を操作して「閉じる」をクリックすると、f2 hideとf1が表示されます。私はf1の機能を作成して、ユーザーがデータベースに対して行った変更をキャッチします。問題は、f2 hideとf1が表示されているときにボタンを使用する代わりに、この関数を自動的に呼び出す方法です。ありがとう。フォームが再び現れたときに関数を自動実行するC#
答えて
Shown
という名前のフォームのイベントにイベントがあります。これは、フォームが再び表示されるたびに実行されます。
こちらがお役に立てば幸いです。
編集:
代わりにこれを試してみてください:
this.Hide();
f2.ShowDialog();
MethodUpdateValues();
this.Show();
をこの2行目で一時停止し、F2キーを閉じたときに継続します。
問題は、私が代わりにフォームのコンストラクタでその関数を呼び出すか、FormLoadイベントを処理し、イベントハンドラで、その関数を呼び出して、その後まあ ボタン
を使用するのでは自動的にこの関数を呼び出すことができる方法です。
-1の理由はありませんが、これは正解です –
ありがとうございます。 f1が最初に現れたときにロードイベントが発生し、ロードイベントが隠れて再び表示された後、再び起動されましたか?私はそうは思わない。おそらく他にもいくつかの出来事があります。 – Viviannne
Form1(f1)を非表示にする前とForm2(f2)を作成した後でf2に渡すと、閉じるときにf2によって呼び出されるアクションデリゲートが生成されます。このデリゲートメソッドは、クラスのForm1の内側になり、あなたはForm2のインスタンスはアクションデリゲート
Form2 f2 = new Form2();
f2.ReactivateParent += ReactivateMe;
this.Hide
f2.Show();
...
を結合して、Form1にメソッドを追加表示するために準備するときは、Form1に今の隠しインスタンスに
public class Form2: Form
{
public Action ReactivateParent;
.... form2 methods ....
// Here I call the ReactivateParent inside the FormClosed event handler
// of Form2, but these lines can also in a button click event
// that terminates the Form2 instance....
protected void Form2_FormClosed(object sender, FormClosedEventArgs e)
{
if(ReactivateParent != null)
ReactivateParent();
}
}
を再活性化しますReactivateMe
private void ReactivateMe()
{
// Add here whatever you need to update your Form1 instance....
....
// Reshow the now updated Form1 instance...
this.Show();
}
という名前のこのアプローチの利点は、Form2のはReactivateParentとすべての他の形で行われているかについて心配していないという事実でありますアプリケーションでは、Form2の機能を再利用し、Form2インスタンスが終了したときに通知されます。
さらにこのパターンを改善するには、変更されたデータでForm2インスタンスによって埋められるカスタムクラスのインスタンスを受け取るようにアクションデリゲートを変更することも考えられます。これにより、Form1インスタンスを更新するためのデータベースへの呼び出しを回避できます。
- 1. jquery:フォームがロードされたときに関数を実行
- 2. C#フォームがロードされるたびに呼び出す関数
- 3. Winforms - デザイナーにフォームがロードされたときに関数を実行します。
- 4. ページがロードされたときに関数を実行する
- 5. 呼び出された関数が実行される前にコードを実行
- 6. 私がviを実行するときに呼び出される関数
- 7. C++でMPIを実行しているときに関数を呼び出す
- 8. ビデオ自動再生を実行する
- 9. C#関数が実行されているときにプログレスバーを入力する
- 10. C#:呼び出されたときすぐにイベントを実行
- 11. onclick機能が実行されたときに関数を実行します。
- 12. 子ノードを削除した後で関数自体を再実行することができません
- 13. JQuery関数は自動的に自動実行/イベントが自動的にトリガされますか?
- 14. 呼び出されるたびにPHP関数が実行されますか?
- 15. Javaファイルを実行すると、以前に実行されたファイルが再び実行されます
- 16. SVN:リポジトリが更新されるたびに自動的に実行される
- 17. フォーム送信をクリックしたときのPHP関数の実行
- 18. 別のボタンが押されたときに現在のUITextFieldの自動修正の提案を実行する
- 19. mysql_queryが呼び出されるたびに関数を実行します。 (PHP)
- 20. C# - イベントハンドラが再び呼び出されたときにタイマを再起動します。
- 21. Yii:submitButtonが押されたときに関数を実行
- 22. 値が変わるたびに関数を実行する
- 23. pthreadが終了したときに関数を実行する
- 24. 関数A、B、Cが実行された後にのみ関数Dを呼び出す方法
- 25. Console.ReadLine()が実行されたときにC#コンソールアプリケーションがコードを実行する
- 26. 関数#1を呼び出すと自動的に関数#2が呼び出されます
- 27. 関数が呼び出されていないときに関数が実行されます
- 28. 実行時に関数呼び出しをスキップするC++
- 29. 変数が呼び出されるときにプロセスを実行
- 30. マッピングが発生したときにカスタム関数を自動的に呼び出す(プロパティを満たすため)
ありがとうございました。私は、Shownイベントでテストしました。 f1が最初に現れたときに、Shownイベントが発生し、f1が再び現れ、f2が隠れたとき、Shownは再び発火しなかった。私が望むのは、この時点で機能が引き起こされることです。 – Viviannne
@Viviannne私は新しいアプローチをとった。これは使えますか? – MasterXD
ありがとう、私はあなたの更新を見た。私はSteveのソリューションでテストしましたが、うまくいきました。 – Viviannne