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
相关产品推荐
相关产品推荐

