首页 > 解决方案 > C# - 将'foreach'中的变量传递给其他文件

问题描述

在我的项目中,我有 2 个文件:

Form1.cs我有以下代码:

foreach (var file in files)
{

    File.Copy(file, tempPath + @"\" + System.IO.Path.GetFileName(file));
    if (File.Exists(file))
      {
         //here I want to use a custom MsgBox with a checkbox (form2)
      }
}

Form2.cs我创建了一个自定义 MsgBox 时,我想在显示的文本中使用最后一个文件名(文件中的字符串文件)。

它说“文件”不可用。如何在 2 个表单之间共享变量?我知道我必须将其公开,但是当我尝试这样做时,它会弄乱我的代码。

标签: c#formsvariablespublic

解决方案


一切都取决于上下文;static除了字段之外,没有单一的通用共享全局上下文,不要为此滥用它们。没有单一的“我的表单 1 / 我的表单 2”——你可以有 0、1 或多个——并且代码无法猜测你的意图。

最好的办法可能是使(请重命名它!)的实例可用于该方法,以便您可以执行以下操作:Form2refresh()

void Refresh(Form2 form)
{
   var files = <mydirectory>

   foreach (string file in files)
   {
      form.Text = file;
   }
}

但是,这意味着您实际上只显示最后一个 file值。所以; 你想对其他不是最后一个的人做什么?是其他形式的多个实例吗?我们不知道!


推荐阅读