下面的程序通过按 P 键创建自身的快照。它在程序所在的目录中创建文件。例如,第一次按 P 键时,它会创建文件 snapshot.png,如果再次按它,则会创建 snapshot_1,第三次会创建 snapshot_2,依此类推...但是如果你关闭程序并再次启动它并且那些文件现在存在于目录中,如果现在你按 P 键它会覆盖它们......我想要的是程序检查它要创建的文件是否存在,如果存在,则尝试创建一个具有行中下一个数字的文件..如果也存在,则尝试下一个,依此类推on,直到找到一个不存在的文件名,然后才创建文件。你能帮我修改代码来做我正在描述的吗? string filename = "\\screenshot.png"; private void Mainwindow_KeyDown(object sender, KeyEventArgs e) { if (e.Key == Key.P) { FrameworkElement element = UxVisual as FrameworkElement; var pathstr = System.IO.Path.GetDirectoryName(System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName); filename = "\\screenshot_" + DateTime.Now.ToFileTime() + ".png"; Uri path = new Uri(pathstr + filename); CaptureScreen(element, path); }
1 回答
Helenr
TA贡献1780条经验 获得超3个赞
我不知道为什么这个问题在上面的评论部分变得如此冒犯......但是正如其他用户已经建议的那样,你应该考虑在你的文件路径中添加一个时间戳。您可以使用这样DateTime
的字符串操作来执行此操作:
filename = "\\screenshot_" + DateTime.Now.ToFileTime() + ".png";
可能的输出将是一个名为此文件的文件screenshot132006693766467910.png
,这将导致所有文件名彼此不同并且不会相互覆盖
根据要求,您可以使用以下方法使它看起来更好:
var filename = "\\screenshot_" + DateTime.Now.ToString("HH_mm_ss_fff") + ".png";
输出就像screenshot_16_14_11_523.png
包含时分秒和毫秒
- 1 回答
- 0 关注
- 96 浏览
添加回答
举报
0/150
提交
取消