Form2关闭时Form1执行方法不起作用

JDeveloper

我目前正在使用 VS Community 2017 用 C# 编写一个应用程序来计算和组织汽油(对于汽车,每 100 公里需要多少升等)。
我有两个框架,一个用于显示所有数据的概览,另一个用于输入新数据。当有人输入新数据时,我想在 frame1 处刷新。因此,我有一种方法可以使用保存了所有数据的文件中的内容更改标签的文本。
所以我的问题似乎与这个问题相似,但不知何故标签的文本没有改变。我也试过这个,但也在这里,标签文本不会改变。我没有收到任何错误,因此无法提供此信息,但我认为解决方案 1 不起作用,因为我不只是使用 Frame 我使用了另一个现有框架的实例。
以下是代码中最重要的部分:

Frame1:

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();
        }
    }
}

其中“...”是不重要的代码被跳过。
感谢您的帮助!

克日什托夫·布拉查

Reload多次调用您的方法,但该path变量仅在第一次调用该函数时有效。每次更改变量时,路径都无效并发生异常。

您可以像这样解决问题:

public void Reload()
{
    var fullPath = path + "DataTC.txt";
    try { lbl_test.Text = File.ReadAllText(fullPath); } catch (Exception ex) { }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

关闭Form2后刷新Form1

从form1访问form2中的不同元素,反之亦然

将多行从Form1的gridview传递到Form2,然后单击按钮

当我执行OnDblClick事件(Form1)打开Form2时,它将触发Form2的OnCellClick事件,而无需单击form2网格

从form2插入后,form1中的datagridview自动刷新

在Windows应用程序C#中关闭Form2之前不能关闭Form1

关闭Form2后,C#使Form1执行操作

提交form2之前从form1到form2获取值的任何可能方法

我想从Form2(文本框,图片框)控制Form1

禁用form2移出form1

通过将form2提交到django视图来获取form1值

使用Form1的公共变量从Form1调用Form2的函数

如何从Form2访问Form1的非静态方法

C#-通过交叉关闭Form2后无法看到Form1

关闭form2时关闭form1(通过红色十字按钮)

C#中form1和form2之间的数据传递

c#从form2激活form1上的面板

在 Form2 上调用函数时从 Form1 上的文本框中获取文本

从 Form1 到 Form2 的显示变量

通过按钮单击将值从 form1 传递到 form2 到 form2

如何从form1到form2取值并返回?

防止 Form1 上的对话框阻止与 Form2 的交互?

从form2中的按钮我想在form1的面板中添加动态按钮。此代码不起作用

如果我关闭了 Form2,如何关闭 Form1?

单击form2按钮时如何停止form1的计时器

将数据从 form2 方法传递到 form1 文本框

当form1中的值发生变化时如何使form2更新

使用 php/javascript 或 jquery 提交 form2 时阻止其他 form1 提交

将 Form1 中的“Private Sub Procedure1”从 Form2 更改为“Public -”(Form1)