如何让C# WinForm中函数内的数组在整个窗体中可用?
如何让C#窗体中的数组在所有函数中访问?
首先,不用急着用公共声明(public)——你只需要在当前窗体内部访问这个数组,用私有字段就完全够用了。公共声明会把这个数组暴露给其他类,反而不符合代码封装的原则,完全没必要。
给你一步步说怎么改:
在窗体类的顶部声明私有字段
把原来在方法里的serverValues变量,移到窗体类的所有方法外面,作为类的私有成员。因为你是把每行分割成数组,所以用二维数组更合适:public partial class frmExecute : Form { // 声明私有字段,供整个窗体的方法访问 private string[][] _serverValues; // 下面是你的构造函数、frmExecute_Load等方法... }在frmExecute_Load中给字段赋值
原来的方法里不要重新声明serverValues,直接给类里的_serverValues赋值。另外注意你的文件路径里的转义字符——\t会被当成制表符,要加@来避免转义问题:private void frmExecute_Load(object sender, EventArgs e) { // 加@避免路径里的转义字符被解析成特殊符号 string[] data = File.ReadAllLines(@"c:\toyotoconsole\tssetup.txt"); _serverValues = new string[data.Length][]; for (int i = 0; i < data.Length; i++) { _serverValues[i] = data[i].Split('|'); } }在窗体的其他方法中使用这个数组
现在你在同一个窗体的任意方法里,都能直接调用_serverValues了。建议使用前加个null检查,避免文件读取失败时出现空引用异常:private void btnProcessServers_Click(object sender, EventArgs e) { if (_serverValues != null) { foreach (var serverData in _serverValues) { // 处理每一行的分割数据,比如取serverData[0]、serverData[1]等 MessageBox.Show($"服务器信息:{string.Join(", ", serverData)}"); } } }
内容的提问来源于stack exchange,提问作者ScaryMinds
相关产品推荐
相关产品推荐

