Дублирование проблемы дочернего окна - PullRequest
1 голос
/ 18 января 2011

В моем приложении у меня есть кнопка «Отправить», которая делает это:

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.

Может кто-нибудь сказать мне, почему? Я использую то же ChildWindow в других местах, и у меня нет проблем ...

Ответы [ 3 ]

1 голос
/ 18 января 2011

Я использую то же ChildWindow в других местах, и у меня нет проблем ...

Вы имеете в виду с помощью: Когда вы используете childwindows в разных местах, у вас нет этой проблемы?Если это так, я могу только предположить, что при нажатии OK вы не просто нажимаете верхнее окно, но и нижнее окно.

Вы можете добавить поведение, удаляющее событие Submit_button_Click из первого дочернего окна.

Но зачем показывать сообщение в дочернем окне?Вы можете использовать MessageBox.Show("Some string") для этого.

0 голосов
/ 18 января 2011
    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
            { }
    }
}
0 голосов
/ 18 января 2011

Похоже, Submit_button_Click метод присоединяется несколько раз к событию click (для каждого клика).

Убедитесь, что это не так, добавив туда breakpoint и посмотрите,ударить несколько раз.

...