我正在尝试弄清楚如果没有足够的空间保存,如何有效地防止保存数据。
是否可以不关闭"保存文件对话框"窗口并向用户显示消息?
这将完成您想要实现的目标。与您的请求的唯一区别是,您不会在对话框打开时进行检查,而是在实际选择文件后进行检查。请随意根据您的需要调整此代码
//Call this function instead of SaveFileDialog.Show()
void showSaveDialog()
{
//Open dialog
SaveFileDialog sfd = new SaveFileDialog();
sfd.ShowDialog();
//check if file exists
if (!File.Exists(sfd.FileName))
{
return;
}
// get the harddrive the user is saving on and get the free space
string drive = System.IO.Path.GetPathRoot(sfd.FileName);
double freeSpace = getFreeSpace(drive);
double filesize = new System.IO.FileInfo(sfd.FileName).Length;
//Messagebox if the is not enought space and restart
if ( filesize > freeSpace)
{
MessageBox.Show($"Not enough free space on harddrive {drive}...nFree space was {freeSpace} and file was {filesize}","Storage Error");
showSaveDialog();
}
else
{
//save your file here
}
}
double getFreeSpace(string drive)
{
DriveInfo[] allDrives = DriveInfo.GetDrives();
foreach (DriveInfo d in allDrives)
{
if (d.Name==drive)
{
return d.AvailableFreeSpace;
}
}
return 0;
}