You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Form1的按钮点击重新加载Form2(关闭后重开)

解决Form1按钮重新加载Form2的问题

我来帮你搞定这个需求!你之前的代码没生效,核心问题是既没处理已经打开的Form2实例,也没正确显示新创建的窗体,而且Refresh()方法只是用来重绘控件,根本不是重新加载窗体的正确方式。

正确的实现思路

要实现“关闭现有Form2再重新打开”的效果,需要分两步走:

  • 先找到当前程序中已经打开的Form2窗口并关闭它
  • 然后新建Form2实例并显示出来,这样就能触发Form2_Load事件更新图片了

完整代码示例

把Form1按钮的点击事件改成这样:

private void Button1_Click(object sender, EventArgs e)
{
    // 查找当前已打开的Form2实例
    Form2 existingForm = Application.OpenForms.OfType<Form2>().FirstOrDefault();
    
    // 如果找到已打开的Form2,先关闭并释放资源
    if (existingForm != null)
    {
        existingForm.Close();
        existingForm.Dispose(); // 可选但推荐,确保资源被释放
    }
    
    // 新建并显示Form2,触发Form2_Load事件更新图片
    Form2 newForm = new Form2();
    newForm.Show();
}

为什么之前的代码无效?

你之前写的:

Form2 frm = new Form2(); 
frm.Refresh();

只是创建了一个新的Form2对象,但从来没调用Show()方法把它显示出来;而且Refresh()的作用是让窗体重绘现有控件,完全不会触发Form2_Load事件,自然看不到图片更新的效果。

额外注意

如果你的Form2是用ShowDialog()模态打开的,那关闭逻辑需要稍微调整(因为模态窗口会阻塞线程),但一般非模态窗口用上面的代码就完全没问题啦。

内容的提问来源于stack exchange,提问作者cooder_one

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 03:38:46