我目前正在使用VS社区2017编写一个C#应用程序来计算和组织汽油产品(汽车,每100公里多少升等)。
我有两个框架,一个用于显示所有数据的概览,另一个用于输入新数据。当有人输入新数据时,我想在第1帧刷新。因此,我有一个方法,用文件中的内容更改标签的文本,其中包含所有数据
所以我的问题似乎与this问题类似,但不知何故标签的文本没有改变。我也试过了this但也在这里,标签文字不会改变。我没有得到任何错误,所以我不能提供这个,但我认为solution1不起作用,因为我不使用简单的框架我使用另一个已经存在的框架的实例。
以下是代码中最重要的部分:
帧1:
using System;
using System.IO;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace TankCheck_PC_Edition
{
public partial class f_StartTC : Form
{
string path = Directory.GetCurrentDirectory();
public f_StartTC()
{
InitializeComponent();
Reload();
}
public void Reload()
{
path += "DataTC.txt";
try { lbl_test.Text = File.ReadAllText(path); } catch (Exception ex) { }
}
....
private void cmd_add_Click(object sender, EventArgs e)
{
Input_TC.f_Input Frame2 = new Input_TC.f_Input();
Frame2.Closed += delegate
{
Reload();
};
Frame2.Show();
Frame2.FormClosed += new FormClosedEventHandler(Frame2_FormClosed);
}
void Frame2_FormClosed(object sender, FormClosedEventArgs e)
{
Reload();
}
}
}
式2:
using System;
using System.IO;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Input_TC
{
public partial class f_Input : Form
{
long Tacho = 0;
double km=0, price=0, tanked = 0;
string path = Directory.GetCurrentDirectory()+ "DataTC.txt";
public f_Input()
{
InitializeComponent();
}
private void cmd_Save_Click(object sender, EventArgs e)
{
...
if(!File.Exists(path))
File.WriteAllText(path, output);
else
File.AppendAllText(path, output);
TankCheck_PC_Edition.f_StartTC Test = new TankCheck_PC_Edition.f_StartTC();
Test.Reload();
Close();
}
}
}
其中“...”是不重要的代码被跳过。
谢谢你的帮助!
答案 0 :(得分:1)
您多次调用Reload
方法,但path
变量仅在第一次调用函数时有效。每次下次更改变量时,路径无效并发生异常。
你可以解决这个问题:
public void Reload()
{
var fullPath = path + "DataTC.txt";
try { lbl_test.Text = File.ReadAllText(fullPath); } catch (Exception ex) { }
}