-2

現在3つのフォームを持つアプリを作成していますが、

  • 親フォーム - ユーザーからのログインの詳細を受け入れ、検証し、成功した場合は非表示にして子フォームを開きます。
  • 1 番目の子フォーム - フォームのロード時にデータベースに接続し、データを取得して表示します。新しいエントリをクリックすると、別の子フォームが開きます。
  • 2 番目の子フォーム - ユーザーがデータベースの新しいエントリに新しいデータを入力します。成功すると、成功メッセージ ボックスが表示されます。ユーザーが閉じるボタンをクリックすると、このフォームは非表示になり、最初の子フォームが表示されます。

私がやりたいのは、2番目の子フォームを閉じるときに、1番目の子フォームをリロードする方法を見つけることです。これにより、レコードが表示されて更新され、2番目の子フォームを使用して作成されたばかりの新しいエントリが表示されます。

どうすればこれを達成できるか教えてください。

非表示イベントを処理するために使用したコードは次のとおりです。

ログインイベントのメインフォームで = true

cpanel child = new cpanel(); //create new isntance of form, cpanel is the 1st child form
child.FormClosed += new FormClosedEventHandler(child_FormClosed); //add handler to catch when child form is closed
child.Show(); //show child
this.Hide(); //hide parent

void child_FormClosed(object sender, FormClosedEventArgs e)
        {
            //when child form is closed, the parent reappears
            MessageBox.Show("You have been logged out.");
            Application.Exit();
        }

2番目の子フォームでは、このようなものがあります

private void button3_Click(object sender, EventArgs e)
        {
            this.Close();

        }
4

3 に答える 3

1

あなたChildForm1をメインフォームにします:

Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);

using(var loginForm = new LoginForm())
    if (loginForm.ShowDialog() != DialogResult.OK)
        return;

Application.Run(new ChildForm1());

そしてフォームChildFrom2から表示ChildForm1

Hide(); // you really don't need to hide main form

using(var childForm2 = new ChildForm2())
{
    if (childForm2.ShowDialog() == DialogResult.OK)
    {
        // update ChildForm1 with data from ChildForm2
    }    
}

Show();
于 2013-01-08T15:45:28.333 に答える
0

これを使用できます:

閉じる前の 2 番目の子フォーム:

childForm1.refresh()

最初の子フォーム:

public static void refresh() //You can use it with parameters too
{
  //do something
}
于 2013-01-08T17:32:55.177 に答える
0

もう一度、私は最終的に問題を解決し、いつか同様の問題を抱えている人を助けることを期待して解決策を投稿しています.

実際の解決策は非常に単純です。これが実行する必要があることです。

この行を子フォームのメソッド内以外の第 2 フォームの保護セクションのどこかに追加して、常に存在するようにします。

cpanel child = new cpanel();

2nd Form の閉じるボタン メソッドの内部は、次のようにする必要があります。

private void button3_Click(object sender, EventArgs e)
        {
            child.Show();
            this.Hide(); //hide parent
        }

これにより、内容を更新した後、2nd Form の閉じるボタンをクリックすると、更新された 1st Form を取得できます。

于 2013-01-09T14:53:17.440 に答える