圣者
精华
|
战斗力 鹅
|
回帖 0
注册时间 2012-7-17
|
本帖最后由 夜语 于 2022-8-15 12:34 编辑
很简单的逻辑,检查文件是否存在,再细分几种情况
怀疑是我写错了我在好多地方明确的用消息框判断 bool 是否正确
但 消息框提示的 bool 是 true 却进到 false 分支
最奇怪的直接就跳到了某一行,同一语句块的上一行居然不执行...
举例文件是新增的,应该进入第一个true分支
但它直接跳到了 ////被直接命中 且跳过了上一语句 //////被跳过了没执行
这一句之前我清空了一个 数组
然后这一句就直接报 下标溢出错误了
这一行代码是200ms执行一次
有没有可能执行的时候条件是一种情况(逻辑是旧的)
我用消息框提示的是另一种情况(消息框是时的,后续的逻辑是旧的)
抱歉,放代码框中好像乱码... 我尽量精简了多余部分,直接放文本吧
string path = Path.Combine(CurrentDir, e.Name);
int n = GetIndexFromPath(path);
string pathSave = Current.Path;
MessageBox.Show($"{File.Exists(path)}");
if (File.Exists(path))
{
MessageBox.Show($"{File.Exists(path)}");
if (n < 0) //新增
{
n = GetInsertIndex(path);
_pics.Insert(n, path);
Pics.Insert(n, new ImageHandling.ImageBase(path));
}
else //修改
{
Pics.RemoveAt(n);
Pics.Insert(n, new ImageHandling.ImageBase(path));
}
}
else //删除;
{
MessageBox.Show($"{File.Exists(path)}"); //////被跳过了没执行
if (_pics.Count == 1)
{
Misc.States.DirChange();
MainWindow.Restore();
return;
}
if (pathSave == path && IsPicsNotNull) //删除当前文件
{
MessageBox.Show($"{File.Exists(path)}"); //////被跳过了没执行
pathSave = _pics.Count > n + 1 ? _pics[n + 1] : _pics[n - 1]; ///被直接命中
}
if (n < 0) return;
_pics.RemoveAt(n);
Pics.RemoveAt(n);
}
|
|