自动图片滑块C#

自动图片滑块C#,c#,C#,我希望当表单加载和/或启动时,我的图片幻灯片将自动启动。我试图放置文件夹所在的路径,但它不断给出错误。当我在对话框中使用它时,它会工作。我试图绕过该对话框,使其自动启动 public partial class Form1 : Form { private string[] folderFile = null; private int selected = 0; private int end = 0; FolderBrowserDialog folder

我希望当表单加载和/或启动时,我的图片幻灯片将自动启动。我试图放置文件夹所在的路径,但它不断给出错误。当我在对话框中使用它时,它会工作。我试图绕过该对话框,使其自动启动

 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 >>";
        }
    }


}
公共部分类表单1:表单
{
私有字符串[]folderFile=null;
选择的私有int=0;
私有int-end=0;
FolderBrowserDialog folderBrowserDialog1=新建FolderBrowserDialog();
//该文件夹是预先创建的
字符串路径1=Environment.GetFolderPath(Environment.SpecialFolder.Personal)+“\\Pictures”;
公共表格1()
{
初始化组件();
//当窗体启动时,这不起作用。
如果(!Directory.Exists(path1))
{
字符串[]part1=null,part2=null,part3=null;
part1=Directory.GetFiles(路径1,*.jpg”);
part2=Directory.GetFiles(路径1,*.jpeg”);
part3=Directory.GetFiles(路径1,*.bmp”);
folderFile=新字符串[part1.Length+part2.Length+part3.Length];
Copy(part1,0,folderFile,0,part1.Length);
Copy(part2,0,folderFile,part1.Length,part2.Length);
复制(part3,0,folderFile,part1.Length+part2.Length,part3.Length);
所选=0;
//开始=0;
end=folderFile.Length;
showImage(folderFile[选定]);
//5到10秒的间隔
//timer1.Enabled=true;
}
其他的
{
}
}
私有void Form1\u加载(对象发送方、事件参数e)
{
}
私有无效计时器1_刻度(对象发送方,事件参数e)
{
下一代();
}
私有void btnFolder\u单击(对象发送者,事件参数e)
{
//原创的
//这个有用!!
//while(folderBrowserDialog1.ShowDialog()==DialogResult.OK)
//{
//字符串[]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=新字符串[part1.Length+part2.Length+part3.Length];
//Copy(part1,0,folderFile,0,part1.Length);
//Copy(part2,0,folderFile,part1.Length,part2.Length);
//复制(part3,0,folderFile,part1.Length+part2.Length,part3.Length);
//所选=0;
////begin=0;
//end=folderFile.Length;
//showImage(folderFile[选定]);
////btnPrev.Enabled=true;
////btnNext.Enabled=true;
////btnStartSlide.Enabled=true;
//}
}
私有void showImage(字符串路径)
{
Image imgtemp=Image.FromFile(路径);
//pictureBox1.Width=imgtemp.Width/2;
//pictureBox1.Height=imgtemp.Height/2;
//pictureBox1.Image=imgtemp;
panel1.BackgroundImage=imgtemp;
}
私有图像()
{
如果(所选==0)
{
selected=folderFile.Length-1;
showImage(folderFile[选定]);
}
其他的
{
选定=选定-1;
showImage(folderFile[选定]);
}
}
私有无效下一代()
{
if(selected==folderFile.Length-1)
{
所选=0;
showImage(folderFile[选定]);
}
其他的
{
选定=选定+1;
showImage(folderFile[选定]);
}
}
私有无效btnPreviews\u单击(对象发送者,事件参数e)
{
prevImage();
}
private void btnNext_单击(对象发送方,事件参数e)
{
下一代();
}
私有void btnStart_单击(对象发送方,事件参数e)
{
如果(timer1.Enabled==true)
{
timer1.Enabled=false;
btnStart.Text=“>”;
}
其他的
{
timer1.Enabled=true;
btnStart.Text=“>”;
}
}
}
}试试看

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

或使用

string publicDesktopPath = Environment.GetFolderPath(Environment.SpecialFolder.CommonDesktopDirectory);
var directory = new DirectoryInfo(publicDesktopPath);
string path1 = directory.Parent.FullName + "\\Pictures\\Sample_Pictures";
修正你的条件

if (!Directory.Exists(path1)) {

这样您就不会在不存在的目录上尝试操作

要让它在图片中循环,可以使用
系统.Timers.Timer

在你的一年级

private static Timer timer;
在构造函数中声明计时器:

timer = new System.Timers.Timer(5000); // change interval in milliseconds
timer.Elapsed += OnTimedEvent;
timer.Enabled = true;
在Form1类中创建OnTimedEvent方法:

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

什么错误<代码>目录NotFoundException?另外,如果(!Directory.Exists(path1))存在,为什么要使用
,然后尝试从不存在的目录获取文件?您要访问的文件夹的完整路径是什么?路径是C:\Users\Public\Pictures\Sample\u Pictures,并且已创建。因此,当我运行表单时,它不会加载任何内容,因此没有图片出现,并以错误提示我。我希望当我运行程序时,图片幻灯片会自动覆盖我,单击按钮浏览文件夹并单击“确定”。我希望这对我有所帮助。我只是想绕过程序启动时自动浏览的文件夹。那么,如果设置
path1=“C:\Users\Public\Pictures\Sample\u Pictures”只是为了检查一下?P.S.使用<代码>如果(目录存在(PAT1))/代码>否则它将什么也不做,如果该目录存在。它打开到文件夹但不循环通过图片…考虑使用<代码>列表< /代码>然后<代码>文件。AddRange(目录GetFiles(PAT1,”JPG”)
用于每种文件类型。只是为了便于编码。它会打开文件夹,但不会循环浏览文件夹内的图片。@user3329960添加了一个计时器示例。创建计时器对我帮助很大。我没有想到手动创建新计时器。谢谢。。。。
timer = new System.Timers.Timer(5000); // change interval in milliseconds
timer.Elapsed += OnTimedEvent;
timer.Enabled = true;
private static void OnTimedEvent(Object source, ElapsedEventArgs e)
{
    // Do what you want every time the timer elapses that interval
    nextImage();
}