user3329960
user3329960

Reputation: 42

Automatic Picture Slider C#

I would like that when the form loads and/or starts my picture slide will start automatically.I tried to put the path of where the folder is located but it keeps giving an error. When I use it a dialog box it works. I am trying to bypass the dialog box so it starts automatically.

 public partial class Form1 : Form
  {
    private string[] folderFile = null;
    private int selected = 0;
    private int end = 0;

    FolderBrowserDialog folderBrowserDialog1 = new FolderBrowserDialog();
    // The folder is pre created
    string path1 = Environment.GetFolderPath(Environment.SpecialFolder.Personal) + "\\Pictures";


    public Form1()
    {
        InitializeComponent();

         //This does not work when the form starts up.


        if (!Directory.Exists(path1))
        {
            string[] part1 = null, part2 = null, part3 = null;

            part1 = Directory.GetFiles(path1, "*.jpg");
            part2 = Directory.GetFiles(path1, "*.jpeg");
            part3 = Directory.GetFiles(path1, "*.bmp");

            folderFile = new string[part1.Length + part2.Length + part3.Length];

            Array.Copy(part1, 0, folderFile, 0, part1.Length);
            Array.Copy(part2, 0, folderFile, part1.Length, part2.Length);
            Array.Copy(part3, 0, folderFile, part1.Length + part2.Length, part3.Length);

            selected = 0;
            //begin = 0;
            end = folderFile.Length;

            showImage(folderFile[selected]);

            // 5 to 10 second intervals
            //timer1.Enabled = true;

        }
        else
        {

        }
    }

    private void Form1_Load(object sender, EventArgs e)
    {

    }


    private void timer1_Tick(object sender, EventArgs e)
    {
        nextImage();
    }

    private void btnFolder_Click(object sender, EventArgs e)
    {
        //Original
        //This works!!


        //while (folderBrowserDialog1.ShowDialog() == DialogResult.OK)
        //{
        //    string[] part1 = null, part2 = null, part3 = null;

        //    part1 = Directory.GetFiles(folderBrowserDialog1.SelectedPath, "*.jpg");
        //    part2 = Directory.GetFiles(folderBrowserDialog1.SelectedPath, "*.jpeg");
        //    part3 = Directory.GetFiles(folderBrowserDialog1.SelectedPath, "*.bmp");

        //    folderFile = new string[part1.Length + part2.Length + part3.Length];

        //    Array.Copy(part1, 0, folderFile, 0, part1.Length);
        //    Array.Copy(part2, 0, folderFile, part1.Length, part2.Length);
        //    Array.Copy(part3, 0, folderFile, part1.Length + part2.Length, part3.Length);

        //    selected = 0;
        //    //begin = 0;
        //    end = folderFile.Length;

        //    showImage(folderFile[selected]);

        //    //btnPrev.Enabled = true;
        //    //btnNext.Enabled = true;
        //    //btnStartSlide.Enabled = true;

        //}
    }

    private void showImage(string path)
    {
        Image imgtemp = Image.FromFile(path);
        //pictureBox1.Width = imgtemp.Width / 2;
        //pictureBox1.Height = imgtemp.Height / 2;
        //pictureBox1.Image = imgtemp;
        panel1.BackgroundImage = imgtemp;
    }

    private void prevImage()
    {
        if (selected == 0)
        {
            selected = folderFile.Length - 1;
            showImage(folderFile[selected]);
        }
        else
        {
            selected = selected - 1;
            showImage(folderFile[selected]);
        }
    }

    private void nextImage()
    {
        if (selected == folderFile.Length - 1)
        {
            selected = 0;
            showImage(folderFile[selected]);
        }
        else
        {
            selected = selected + 1;
            showImage(folderFile[selected]);
        }
    }

    private void btnPreviews_Click(object sender, EventArgs e)
    {
        prevImage();
    }

    private void btnNext_Click(object sender, EventArgs e)
    {
        nextImage();
    }

    private void btnStart_Click(object sender, EventArgs e)
    {
        if (timer1.Enabled == true)
        {
            timer1.Enabled = false;
            btnStart.Text = "<< START >>";
        }
        else
        {
            timer1.Enabled = true;
            btnStart.Text = "<< STOP >>";
        }
    }


}

}

Upvotes: 0

Views: 945

Answers (1)

user1071777
user1071777

Reputation: 1307

Try

string path1 = Environment.GetFolderPath(Environment.SpecialFolder.MyPictures) + "\\Sample_Pictures";

or

string path1 = Environment.GetFolderPath(Environment.SpecialFolder.CommonPictures) + "\\Sample_Pictures";

Or use

string publicDesktopPath = Environment.GetFolderPath(Environment.SpecialFolder.CommonDesktopDirectory);
var directory = new DirectoryInfo(publicDesktopPath);
string path1 = directory.Parent.FullName + "\\Pictures\\Sample_Pictures";

and fix your conditional

if (!Directory.Exists(path1)) {

to

if (Directory.Exists(path1)) {

so that you don't try operations on an non-existent directory.

To get it to cycle through your pictures, you could use a System.Timers.Timer:

In your Form1 class

private static Timer timer;

Declare the timer in your constructor:

timer = new System.Timers.Timer(5000); // change interval in milliseconds
timer.Elapsed += OnTimedEvent;
timer.Enabled = true;

Create the OnTimedEvent method in your Form1 class:

private static void OnTimedEvent(Object source, ElapsedEventArgs e)
{
    // Do what you want every time the timer elapses that interval
    nextImage();
}

Upvotes: 1

Related Questions