几天前,我开始使用自己的照片查看器/编辑器。我已经实现了方法“OnKeyDown”,它根据按下的箭头键更改照片:
case Keys.Left:
case Keys.Down:
ic.getImage().Dispose();
--fileIndex;
if (fileIndex < 0)
fileIndex = (fileCount - 1);
ic.setImage(Image.FromFile(fileNames[fileIndex]), ref pictureBox1);
break;
case Keys.Right:
case Keys.Up:
ic.getImage().Dispose();
++fileIndex;
fileIndex %= fileCount;
ic.setImage(Image.FromFile(fileNames[fileIndex]), ref pictureBox1);
break;
这完美地工作。接下来我想做的是对幻灯片进行编程,所以我使用 System.Timers.Timer 来触发事件 goRight() ,该事件执行与按下右箭头键相同的代码:
public void goRight(object source, ElapsedEventArgs e)
{
ic.getImage().Dispose();
++fileIndex;
fileIndex %= fileCount;
ic.setImage(Image.FromFile(fileNames[fileIndex]), ref pictureBox1);
}
使用幻灯片应用程序时会中断。我不知道为什么,因为代码完全相同。如果我注释掉 ic.getImage().Dispose() 幻灯片有效,但 RAM 中的数据量会随着每张下一张照片而越来越高。
难道我做错了什么?谢谢你的时间,我很感激!
呃,差点忘了。有没有一种方法可以在没有 if 语句的情况下使索引向后退(在键按下和键向左事件中)(如运算符 % 用于前向)。我确实试过这个:
++fileIndex;
fileIndex %= fileCount;
ic.setImage(Image.FromFile(fileNames[(fileCount -1) - fileIndex]), ref pictureBox1);
如果我只朝一个方向走,效果很好,但如果我改变方向,它会跳过几个索引。对此有什么想法吗?
最好的祝福。Z