C# - 将'foreach'中的变量传递给其他文件
Posted
技术标签:
【中文标题】C# - 将\'foreach\'中的变量传递给其他文件【英文标题】:C# - Passing variables in 'foreach' to other fileC# - 将'foreach'中的变量传递给其他文件 【发布时间】:2019-01-17 20:07:02 【问题描述】:在我的项目中,我有 2 个文件:
Form1.cs
Form2.cs
在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 个表单之间共享变量?我知道我必须将其公开,但是当我尝试这样做时,它会弄乱我的代码。
【问题讨论】:
您的文件可以有多条记录吗?你的标签是单一的,完全令人困惑 我只想在我的其他文件中使用“字符串文件”.. 多少?你的 foreach 可以返回多个? 也许我可以告诉你更多关于我的想法。在 foreach 中,文件被复制。如果文件已经存在,则会弹出一个自定义 MessageBox,并且在 MessageBox-text 中我想使用已经存在的文件的名称。 用适当的要求更新您的问题并编写您尝试过的代码,而不是人们可能会帮助您。 【参考方案1】:一切都取决于上下文;除了static
字段外,没有单一的通用共享全局上下文,请不要为此滥用它们。没有单一的“我的表单 1 / 我的表单 2”——你可以有 0 个、1 个或多个——而且代码无法猜测你的意图。
最好的办法可能是让Form2
的实例(请重命名它!)可用于refresh()
方法,以便您可以执行以下操作:
void Refresh(Form2 form)
var files = <mydirectory>
foreach (string file in files)
form.Text = file;
然而,这将意味着您只实际上显示 last file
值。所以;你想对其他不是最后一个的人做什么?是其他形式的多个实例吗? 我们不知道!
【讨论】:
感谢您的宝贵时间。我更新了我的问题,希望你能理解我的意图。 @loyd 我不认为这会改变我的答案......对于刷新方法可以访问任何特定表单,刷新方法必须创建表单,或者现有的表单需要使其可用... 好吧.. 我试着多读一点。由于这个问题对其他人没有意义,您可以将其删除,我认为它对其他人没有帮助.. 感谢您的时间:)以上是关于C# - 将'foreach'中的变量传递给其他文件的主要内容,如果未能解决你的问题,请参考以下文章
如何将变量从 ViewController 类传递给其他结构?