【问题标题】:auto saving the text in text editor every five seconds每五秒自动将文本保存在文本编辑器中
【发布时间】:2018-03-26 17:30:52
【问题描述】:

我是 C# 新手。基本上我想使用计时器实现自动保存功能。我可以知道如何实现它,以便文本每 5 秒自动保存一次吗?

SaveFileDialog saveFile1 = new SaveFileDialog();

saveFile1.DefaultExt = "*.rtf";
saveFile1.Filter = "RTF Files|*.rtf";

if (saveFile1.ShowDialog() == System.Windows.Forms.DialogResult.OK &&
           saveFile1.FileName.Length > 0)
{

   txtb.SaveFile(saveFile1.FileName, RichTextBoxStreamType.PlainText);

我可以保存文件,但如何自动保存?

【问题讨论】:

  • 编写一个无需用户交互即可保存文件的方法,即无需SaveFileDialog,然后从您的手动保存例程中调用该方法,即相应ButtonClick 事件处理程序,并从您的自动保存例程中,即您的TimerTick 事件处理程序。它没有魔法。
  • 你可以简单地搜索How to use Timers in C#How to write a text file

标签: c# visual-studio timer richtextbox autosave


【解决方案1】:

只需使用间隔为5000ms的计时器

Timer tmr = New Timer;
tmr.Interval = 5000;

现在在Form_Load 事件或任何你想第一次调用它的地方调用你的计时器。之后,只需使用计时器的Tick 事件(注意:第一次调用SAVEFILEDIALOG 时,请确保将位置存储在某个变量中,以便您可以继续重复使用它来保存文本文件,这将消除一次又一次使用SAVEFILEDIALOG 的需要):

字符串路径文件;

private sub FirstTimeSaveIt_Click // the button that saves it first
if (saveFile1.ShowDialog() == System.Windows.Forms.DialogResult.OK &&
saveFile1.FileName.Length > 0)
{
  pathOfFile = saveFile1.FileName
  txtb.SaveFile(saveFile1.FileName, RichTextBoxStreamType.PlainText);
  }
private void tmr_Tick()
{
tmr.Stop();
txtb.SaveFile(pathOfFile, RichTextBoxStreamType.PlainText);

tmr.start();
}

【讨论】:

  • tmr.Tick += new EventHandler(File_Save_MenuItem_Click);我使用了这个滴答事件方法,但它抛出了一个错误。你能解释一下如何使用滴答事件以及我必须在哪里调用这个函数@Sebastian Hofmann
  • 只需在表单加载中声明事件
  • private void File_Save_MenuItem_Click(object sender, EventArgs e) { Timer tmr = new Timer(); tmr.Interval = 5000; tmr.Start(); //逻辑保存 tmr.Stop(); tmr.Tick += File_Save_MenuItem_Click; } 是我做的方式是正确的
  • 只需从工具箱中添加一个计时器计时器到您的表单
  • 我在计时器中添加了该方法,但出现错误,名称空间“System.Windows.Forms”中不存在类型或名称空间名称“Timers”(您是否缺少程序集引用?)。我试图添加程序集 system.windowsform dll,但它不可用。我知道如何修复它
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-03
  • 1970-01-01
相关资源
最近更新 更多