在类之间访问列表数组
本文关键字:列表 数组 访问 之间 | 更新日期: 2023-09-27 18:18:01
我用c#创建了一个简单的表单,只有几个按钮和文本框。用户将输入各种详细信息,如项目描述和代码编号,输出文件位置等。
最终用户将启用一个浏览按钮,允许他/她选择报告所在的输入目录。
浏览按钮使用FolderBrowserDialog并检查结果。如果结果是OK的,那么我已经创建了一个数组与路径到所有的文件使用locationArray = Directory.GetFiles(fbd。SelectedPath、"* . txt");
类定义为public void。
我的计划是在finish按钮中添加一些脚本,然后该按钮将遍历数组,提取文件名,读取每个文件的内容并生成具有各种详细信息的报告。
我遇到的问题是,我似乎无法访问数组在另一个类(完成按钮)。
我已经在类之前定义了数组- string[] locationArray;
然后使用类填充文件路径数组,如下所示:
locationArray = Directory.GetFiles(fbd。SelectedPath、"* . txt");
在这个阶段,我知道数组正在填充,因为我已经显示了数组的长度。
有人能告诉我如何访问数组下不同的类,所以我可以通过它循环请。
提前感谢。
更具体地说,我的代码是这样的: string[] locationArray;
public void button1_Click_1(object sender, EventArgs e)
{
FolderBrowserDialog fbd = new FolderBrowserDialog();
fbd.Description = "Browse Directory";
if (fbd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
locationArray = Directory.GetFiles(fbd.SelectedPath, "*.txt");
}
FinishButton.Enabled = true;
}
尝试在这里访问locationArray:
private void button1_Click(object sender, EventArgs e)
{
string sProjectName = ProjectName.Text;
string sProjectNumber = ProjectNumber.Text;
string sOutputDirectory = OutputDirectory.Text;
const string message1 = "Done!";
const string caption1 = "Completed";
var result = MessageBox.Show(message1, caption1,
MessageBoxButtons.OK,
MessageBoxIcon.Information);
if (result == DialogResult.OK)
Environment.Exit(0);
}
希望这使它更清楚。
汤姆我想你对这些条款有点混淆。您粘贴的那些实际上是方法,而不是类。如果你想在它们之间共享一个变量,最好的方法是创建一个属性。所以我假设你真正的类有两个事件。我想加上这样的话。
public class Form1: Form { // this should be already in your code... either form or webform
public string[] LocationArray {get; set};
public void button1_Click_1(object sender, EventArgs e)
{
this.LocationArray = ['a', 'b']; // or whatever variable
}
private void button1_Click(object sender, EventArgs e)
{
var array = this.LocationArray; // you do not need to create an extra variable, this is only a way to reference it
}
}
作为免费的额外建议:确保在向对象添加代码之前重命名它们,这样您就不会得到奇怪的命名约定button1_Click
,但您可以使用更有意义的btnSave_Click
。从这个类外部访问相同的属性也很容易。如果是这种情况,只需ping我,我也可以更新答案。
问题似乎是您首先单击button1
,当时您还没有初始化locationArray
。为了避免这个错误,初始化locationArray
如下:
public ReportFormDesign()
{
InitializeComponent();
this.locationArray = new string[0];
}
还要记住Environment.Exit()
有时会抛出Win32Exception
。使用Application.Exit()
代替如果每次单击button1
都退出应用程序,则可以替换这两行
locationArray
。string test = Convert.ToString(locationArray.Length);
MessageBox.Show(test);
MessageBox.Show(0);
但这取决于你的意图。