Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 按其名称关闭特定窗体_C#_Winforms - Fatal编程技术网

C# 按其名称关闭特定窗体

C# 按其名称关闭特定窗体,c#,winforms,C#,Winforms,我已经搜索了一些,我只能找到通过FormCollection循环并关闭表单的解决方案。但是,我想具体地关闭一个表单(如果它是打开的)。有人知道如何做到这一点吗 if(Form.Name("myForm") == open) close(Form.Name("myForm")); 当您关闭表单应用程序时。OpenForms会发生变化,这就是为什么您必须在两个步骤中关闭: List<Form> forms = new List<Form>(); // Al

我已经搜索了一些,我只能找到通过FormCollection循环并关闭表单的解决方案。但是,我想具体地关闭一个表单(如果它是打开的)。有人知道如何做到这一点吗

if(Form.Name("myForm") == open)
    close(Form.Name("myForm"));

当您关闭表单
应用程序时。OpenForms
会发生变化,这就是为什么您必须在两个步骤中关闭:

  List<Form> forms = new List<Form>();

  // All opened myForm instances
  foreach(Form f in Application.OpenForms)
    if (f.Name == "myForm")
      forms.Add(f);

  // Now let's close opened myForm instances
  foreach (Form f in forms)
    f.Close(); 
List forms=new List();
//所有打开的myForm实例
foreach(Application.OpenForms中的表单f)
如果(f.Name==“myForm”)
表格.加入(f);
//现在,让我们关闭打开的myForm实例
foreach(表格f中的表格)
f、 Close();
或者在使用Linq的更简洁的实现中:

Application.OpenForms
第()类
.Where(form=>String.Equals(form.Name,“myForm”))
托利斯先生()
.ForEach(form=>form.Close());

当您关闭表单
应用程序时。OpenForms
会发生变化,这就是为什么您必须分两步关闭的原因:

  List<Form> forms = new List<Form>();

  // All opened myForm instances
  foreach(Form f in Application.OpenForms)
    if (f.Name == "myForm")
      forms.Add(f);

  // Now let's close opened myForm instances
  foreach (Form f in forms)
    f.Close(); 
List forms=new List();
//所有打开的myForm实例
foreach(Application.OpenForms中的表单f)
如果(f.Name==“myForm”)
表格.加入(f);
//现在,让我们关闭打开的myForm实例
foreach(表格f中的表格)
f、 Close();
或者在使用Linq的更简洁的实现中:

Application.OpenForms
第()类
.Where(form=>String.Equals(form.Name,“myForm”))
托利斯先生()
.ForEach(form=>form.Close());


您还可以执行
FORMNAMEHERE.ActiveForm.Close()

您还可以执行
FORMNAMEHERE.ActiveForm.Close()

首先确保您有一个对它的引用如何?也就是说,当你构建它时,将它的引用存储在某个地方。另外,当在FormCollection中循环时,您是否在那里找到您的表单?如果是这样的话,那么问题是什么?我没有试过它是否有效,而是从
foreach(Application.OpenForms中的表单f){If(f.Name==“myForm”)f.Close();}
嗯,它甚至不确定这个表单是否存在。所以我想检查它是否是这个表单的一个开放实例——通过它的名称。如果是,请将其关闭。@SonerGönül thx,该代码给出了“mscorlib.dll中发生的“System.InvalidOperationException”类型的未处理异常”。就像它被“编辑”了一样,首先确保你有一个对它的引用如何?也就是说,当你构建它时,将它的引用存储在某个地方。另外,当在FormCollection中循环时,您是否在那里找到您的表单?如果是这样的话,那么问题是什么?我没有试过它是否有效,而是从
foreach(Application.OpenForms中的表单f){If(f.Name==“myForm”)f.Close();}
嗯,它甚至不确定这个表单是否存在。所以我想检查它是否是这个表单的一个开放实例——通过它的名称。如果是,请将其关闭。@SonerGönül thx,该代码给出了“mscorlib.dll中发生的“System.InvalidOperationException”类型的未处理异常”。就像它被“编辑”过一样,它有一套坚实的方法。虽然,除非你已经熟悉Linq,否则我怀疑前者更具可读性,因此比后者更简洁。这两部作品我都没有。在非Linq版本中,我在IFQ语句中添加了一个“=”。但是,它没有发挥作用:(这可能与我初始化表单有关吗?我像这样键入FormClass var=new FormClass();var.ShowDialog(这个);请帮帮我,我会接受的。我只是需要它来工作。我的入门正确吗?正如我在上面写的那样?@user3427831:是的,你说得很对,它应该是
=
而不是
=
;我很抱歉输入错误。一套可靠的方法。不过,除非你已经熟悉Linq,否则我怀疑前者更可读,因此ore,比后者更简洁。这两种方法我都没有用。在非Linq版本中,我在ifstatement中添加了一个“=”。但是没有用:(这与我初始化表单有关吗?我像这样键入FormClass var=new FormClass();var.ShowDialog(这个);请帮帮我,我会接受的。我只需要它来工作。我的启动正确吗?正如我在上面写的那样?@user3427831:是的,你说得很对,它应该是
=
而不是
=
;我很抱歉输入错误。OP的问题是目标表单的名称是字符串。你的代码将目标表单硬编码,实际上保留了一个d直接引用,在这种情况下不需要找到它们,并且您必须为每个formOP编写另一行。问题是目标表单的名称是字符串。您的代码将目标表单硬编码,实际上包含直接引用,在这种情况下不需要找到它们,并且您必须为每个表单编写另一行