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

WinForms中点击保存按钮时动态更新StatusStrip标签的实现方法

实现保存后动态更新StatusStrip标签

步骤1:添加必要控件

在窗体设计器中完成以下操作:

  • 拖入一个StatusStrip控件到窗体底部
  • 在StatusStrip中添加一个ToolStripStatusLabel,命名为statusLabel(可根据习惯修改)
  • 拖入一个Timer控件到窗体,命名为statusTimer(用于自动恢复状态文本)

步骤2:修改代码

首先在文件顶部添加命名空间引用:

using System.IO; // 用于处理文件路径

修改Form1构造函数,初始化定时器:

public Form1()
{
    InitializeComponent();
    Font_Style.SelectedIndex = 0;
    // 设置定时器间隔为3秒,到点后恢复默认状态文本
    statusTimer.Interval = 3000;
    statusTimer.Tick += StatusTimer_Tick;
}

添加定时器Tick事件处理方法:

private void StatusTimer_Tick(object sender, EventArgs e)
{
    statusLabel.Text = "就绪"; // 可自定义默认状态文本
    statusTimer.Stop();
}

接下来修改两个保存按钮的事件方法,加入状态更新逻辑:

1. 普通保存(saveToolStripMenuItem_Click)

private void saveToolStripMenuItem_Click(object sender, EventArgs e)
{
    bool saveSuccess = false;
    string savedPath = "";

    if (saveFileDialog.FileName == "")
    {
        saveFileDialog.Filter = "Rich Text Format (*.rtf)|*.rtf";
        if (saveFileDialog.ShowDialog() == DialogResult.OK)
        {
            rtbDocument.SaveFile(saveFileDialog.FileName, RichTextBoxStreamType.RichText);
            saveSuccess = true;
            savedPath = saveFileDialog.FileName;
        }
    }
    else
    {
        rtbDocument.SaveFile(saveFileDialog.FileName, RichTextBoxStreamType.RichText);
        saveSuccess = true;
        savedPath = saveFileDialog.FileName;
    }

    if (saveSuccess)
    {
        // 显示保存成功提示,仅展示文件名而非完整路径
        statusLabel.Text = $"已保存:{Path.GetFileName(savedPath)}";
        statusTimer.Start(); // 启动定时器,3秒后恢复默认文本
    }
}

2. 另存为(saveAsToolStripMenuItem_Click)

private void saveAsToolStripMenuItem_Click(object sender, EventArgs e)
{
    SaveFileDialog saveDlg = new SaveFileDialog();
    string filename = "";

    saveDlg.Filter = "Rich Text File (*.rtf)|*.rtf";
    saveDlg.Title = "保存文档";

    DialogResult retval = saveDlg.ShowDialog();
    if (retval == DialogResult.OK)
        filename = saveDlg.FileName;
    else
        return;

    rtbDocument.SaveFile(filename);
    // 更新状态标签
    statusLabel.Text = $"已保存:{Path.GetFileName(filename)}";
    statusTimer.Start();
    // 将新路径同步到全局saveFileDialog,方便后续直接保存
    saveFileDialog.FileName = filename;
}

补充说明

  • 如果不需要自动恢复默认文本,可删除Timer相关代码,直接设置statusLabel.Text即可
  • 可自定义状态文本内容,比如添加保存时间:$"已保存于 {DateTime.Now:HH:mm:ss}:{Path.GetFileName(savedPath)}"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 09:25:06