Buongiorno a tutti!! Sono nuovo e mi sto approcciando alla programmazione in c#.
Ho deciso di realizzare un visualizzatore di immagini così composto:
- pulsante per selezionare/caricare una directory (vorrei che aprisse una directory specifica ma al momento non riesco, l'utente vedere solo la cartella principale e sottocartelle ma non deve poter navigare sul pc)
- una textbox con directory attiva
- listBox per visualizzare i jpg caricati (devo capire come fare il refresh in automatico ad ogni nuovo caricamento della cartella desiderata, al momento mette in coda tutti i file e l'elenco è infinito)
- una PictureBox dove visualizzare le immagini
- pulsanti avanti/indietro/ruota +90/ruota-90
Dopo varie ricerche e prove (tante prove) sono arrivato a “buon punto”, mi manca:
- il refresh della listbox
- directory di “default”
- azioni dei pulsanti di controllo dell'immagine visualizzate
Ringrazio in anticipo a chi mi potrà aiutare!!!
Allego il codice generato:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO; // you need to add this Namespace to access FolderBrowser
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace PhotoViewer
{
public partial class PhotoViewer : Form
{
string currentDir = "";
public PhotoViewer()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void buttonDirectory_Click(object sender, EventArgs e)
{
try
{
var fb = new FolderBrowserDialog();
if (fb.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
// get the selected folder by user
currentDir = fb.SelectedPath;
// display current directory in the text box
textBoxDirectory.Text = currentDir;
// get all image files from the directory
// first create directory info
var dirInfo = new DirectoryInfo(currentDir);
// get the files
var files = dirInfo.GetFiles().Where(c=> (c.Extension.Equals(".jpg") || c.Extension.Equals(".JPG") || c.Extension.Equals(".jpeg")));
foreach (var image in files)
{
// add images (file name) to the list box
listBoxImages.Items.Add(image.Name); // we could add full path to the list but it won't look good.
}
}
}
catch (Exception ex)
{
MessageBox.Show("There was an error : " + ex.Message + " " + ex.Source);
}
}
private void listBoxImages_SelectedIndexChanged(object sender, EventArgs e)
{
try
{
// get the selected image
var selectedImage = listBoxImages.SelectedItems[0].ToString();
if (!string.IsNullOrEmpty(selectedImage) && !string.IsNullOrEmpty(currentDir))
{
// make the full path to the image
var fullPath = Path.Combine(currentDir, selectedImage);
// set an image from file to the PictureBox
pictureBoxImage.Image = Image.FromFile(fullPath);
}
}
catch (Exception)
{
throw;
}
}
private void buttonFlip_Click(System.Object sender, System.EventArgs e)
{
}
private void buttonBack_Click(object sender, EventArgs e)
{
}
private void buttonNext_Click(object sender, EventArgs e)
{
}
}
}