1

私のアプリケーションには、これを行う [送信] ボタンがあります。

private void Submit_button_Click(object sender, RoutedEventArgs e)
{
    string variable = variable_textBox.Text;
    if (variable.Length >= 1 && variable.Length <= 6)
    {
        //get some data from db
    }
    else
    {
        ChildWindow msg = new Msg("Some string");
        msg.Show();
    }
}

これが私の問題です:

プログラムがelse句に行くように文字列を書くと、childWindowが表示されます(それで問題ありません)。しかし、これをもう一度行うと、2 つの childWindows が表示されます。[送信] ボタンをクリックするたびに、childWindows のクリック数を取得します。

誰かが理由を教えてもらえますか? 他の場所でも同じ ChildWindow を使用していますが、問題はありません...

4

3 に答える 3

1

他の場所でも同じ ChildWindow を使用していますが、問題はありません...

ということですか:別の場所で子ウィンドウを使用すると、この問題は発生しませんか? もしそうなら、私はOKをクリックするときに、一番上のウィンドウだけでなく一番下のウィンドウもクリックしないと思います。

最初の子ウィンドウから Submit_button_Click イベントを削除する動作を追加できます。

しかし、なぜ子ウィンドウにメッセージを表示するのでしょうか? そのために使えますMessageBox.Show("Some string")

于 2011-01-18T08:57:12.800 に答える
0
    public static Form IsFormAlreadyOpen(Type FormType)
    {
        foreach (Form OpenForm in Application.OpenForms)
        {
            if (OpenForm.GetType() == FormType)
                return OpenForm;
        }
        return null;
    }


private void Submit_button_Click(object sender, RoutedEventArgs e)
{
    string variable = variable_textBox.Text;
    if (variable.Length >= 1 && variable.Length <= 6)
    {
        //get some data from db
    }
    else
    {
        ChildWindow frm = null;
            if ((frm = (ChildWindow)IsFormAlreadyOpen(typeof(ChildWindow))) == null)
            {
                frm = new ChildWindow();
                frm.Show();
            }
            else
            { }
    }
}
于 2011-01-18T09:01:16.717 に答える
0

メソッドがクリックイベントに複数回アタッチされているようSubmit_button_Clickです(クリックごとに)。

そこにを入れて、これが当てはまらないことを確認し、breakpoint複数回ヒットするかどうかを確認します。

于 2011-01-18T08:57:20.883 に答える