【问题标题】:Winforms Prevent to open same forms DynamicWinforms防止打开相同的表单动态
【发布时间】:2014-05-22 08:02:30
【问题描述】:

如果我点击按钮,我下面的代码效果很好。

if (Application.OpenForms["StockCardForm"] == null)
  {
            var stockCardForm = new StockCardForm();
            stockCardForm.MdiParent = this;
            stockCardForm.Show();
  }
  else
  Application.OpenForms["StockCardForm"].Focus();

代替“StockCardForm”,我怎样才能给表单名称动态或如何防止第二次以动态方式打开相同的表单?

我们将不胜感激。

谢谢。

【问题讨论】:

    标签: c# winforms forms dynamic


    【解决方案1】:

    你可以检查是否有某种类型的表单已经打开,然后做任何你想做的事情。

    if (!Application.OpenForms.OfType<StockCardForm>().Any())
    {
        var  form  = new StockCardForm();
        form.Show();
    }
    else
        Application.OpenForms.OfType<StockCardForm>().First().Focus();
    

    【讨论】:

    • 比我需要一个类和类参数将是表单名称对吗?
    • 不确定我是否理解您的问题。你能详细说明一下吗?
    • 我如何编写一个泛型类并给出 formname 并使用/运行您的代码?
    • 如果我理解正确,你想要的是打开一些表单,而要打开的表单是动态确定的?例如,有两个按钮,每个按钮运行相同的代码但打开不同的表单?
    • 尝试调试并查看 OpenForms 集合,您会发现代码之间的主要区别是什么。此外,使用我的代码很容易创建通用方法,例如 OpenForm,只需将 OfType 替换为 OfType,它将适用于您可能拥有的所有其他表单。还有更多不同之处,但我认为通过一些调试和研究,您会很容易发现它们是什么。
    猜你喜欢
    • 2017-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多