Свойство KeyPreview для вашей формы присваивается True. Затем добавьте следующую строку кода в верхней части файла CS:
using System.IO;
Далее, внутри рамки вашей формы, добавьте эти две строки:
private FileInfo[] _files;
private int _currentFile;
В случае нагрузки вашей формы, поставить это код:
DirectoryInfo dirinfo = new DirectoryInfo(
Path.Combine(Application.StartupPath, "images"));
_files = dirinfo.GetFiles();
_currentFile = 0;
Bitmap bmp = (Bitmap)Bitmap.FromFile(_files[_currentFile].FullName);
pictureBox1.Image = bmp;
Наконец, в KeyDown случае вашей формы, поместите этот код:
if (e.KeyCode == Keys.Down)
{
_currentFile--;
if (_currentFile < 0)
{
_currentFile = _files.Length - 1;
}
}
else if (e.KeyCode == Keys.Up)
{
_currentFile++;
if (_currentFile >= _files.Length)
{
_currentFile = 0;
}
}
Bitmap bmp = (Bitmap)Bitmap.FromFile(_files[_currentFile].FullName);
if (pictureBox1.Image != null)
{
pictureBox1.Image.Dispose();
}
pictureBox1.Image = bmp;
Этот код предполагает, что у вас есть PictureBox в форме с именем «pictureBox1», и предполагается, что в папке вашего приложения есть папка с именем «images», содержащая файлы изображений, которые вы хотите отобразить.
As o.k.w. упомянутый в комментарии, вы можете улучшить этот код, изменив размер PictureBox в соответствии с размерами файла изображения. Это можно сделать, установив свойство SizeMode вашего PictureBox в AutoSize (или установите его в CenterImage, если вы хотите, чтобы общее изображение было сосредоточено на вашей форме).
Предполагаю, вы имеете в виду WinForm? Добавьте обработчик событий для ключевого события для вашей формы и измените источник изображения по своему усмотрению. Я не публиковал это как ответ, потому что он не детализирован и достаточно определен. Возможно, вам потребуется добавить больше обработки изображения, если размеры разные. –