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

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

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

但是为什么要在子窗口中显示消息呢?你可以使用MessageBox.Show("Some string")它。

于 2011-01-18T08:57:12.800 回答
0

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

breakpoint通过将 a放在那里并查看它是否被多次击中来确保不是这种情况。

于 2011-01-18T08:57:20.883 回答
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 回答