复制子窗口问题

时间:2011-01-18 08:48:13

标签: c# silverlight-4.0 childwindow

在我的应用程序中,我有一个提交按钮,可以执行此操作:

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,我没有问题...

3 个答案:

答案 0 :(得分:1)

  

我在其他地方使用相同的ChildWindow   地方,我没有问题...

你的意思是:当你在不同的地方使用儿童窗口时,你没有这个问题吗? 如果是这样,我只能在单击“确定”时假设您不要单击顶部窗口,而是单击底部窗口。

您可以添加从第一个子窗口中删除Submit_button_Click事件的行为。

但为什么要在儿童窗口中显示消息?您可以使用MessageBox.Show("Some string")

答案 1 :(得分:0)

似乎Submit_button_Click方法多次附加到点击事件(每次点击)。

确保不是这种情况,只需在其中加breakpoint并查看是否多次点击。

答案 2 :(得分: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
            { }
    }
}