I created a simple program that display image from selected item in Listbox1 to pictureBox1. It works fine but it takes about 200 milliseconds to display next image. My computer is using Intel i7 processor and Windows 7 64-bit. Please advise how I can speed up the process. Below are my codes. Thanks!
private void openToolStripMenuItem_Click(object sender, EventArgs e)
{
folderBrowserDlg.SelectedPath = folderpath;
this.folderBrowserDlg.ShowNewFolderButton = false; //Disable New Folder button
DialogResult result = this.folderBrowserDlg.ShowDialog();
if (result == DialogResult.OK)
{
folderpath = this.folderBrowserDlg.SelectedPath;
string ImagePath = folderpath.Substring(0, folderpath.LastIndexOf(("\\")));
folderName = folderpath.Substring(folderpath.LastIndexOf(("\\")) + 1);
PathLength = ImagePath.Length; //Use for Substring later
txtBrowse.Text = folderpath; //Get folder path and display to textbox
var filearray = Directory.EnumerateFiles(folderpath, "*.*", SearchOption.AllDirectories).Where(a => a.EndsWith(".tif") || a.EndsWith(".tiff"));
array = filearray.ToArray();
var filenames = Directory.EnumerateFiles(folderpath, "*.*", SearchOption.AllDirectories).Where(a => a.EndsWith(".tif") || a.EndsWith(".tiff")).Select(Path.GetFileName); // Get all image file names
foreach (string fn in filenames)
{
listBox1.Items.Add(fn); // Add all image file names to listbox
}
}
}
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter) //Go to next image after press Enter key
{
if (listBox1.SelectedIndex != listBox1.Items.Count - 1)
{
listBox1.SelectedIndex = listBox1.SelectedIndex + 1;
}
e.SuppressKeyPress = true;
}
}
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
Index = listBox1.SelectedIndex; //Get selected item from listbox
pictureBox1.Image = Image.FromFile(array[Index].ToString()); // display image to picturebox
}