変数を使わずに数値を１上げたい


`pictureBox1`をクリックすると[1]を[2]にしたいです。  
変数無しでやるにはどうすればよいでしょうか？  
グローバル変数などは使いたくありません。  
配列.nextみたいなのを探しています。  
なるべく１行でやりたいです。

[code]

    private void pictureBox1_Click(object sender, EventArgs e)
    {
        pictureBox1.ImageLocation = Directory.GetFiles(label1.Text, "*.*")[1];
    }
    
[/code]




ローカル変数でIEnumeratorを１個だけ持ってもよければ可能ですが

[code]

    using System;
    using System.Linq;
    using System.Windows.Forms;
    namespace WindowsFormsApplication1
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
    
                System.Collections.Generic.IEnumerator<string> ie = null;
                label1.Click += (s, e) => { var d = new FolderBrowserDialog(); if (d.ShowDialog() == DialogResult.OK) label1.Text = d.SelectedPath; };
                label1.TextChanged += (s, e) => { ie = System.IO.Directory.GetFiles(label1.Text, "*.*").Cast<string>().GetEnumerator(); };
                pictureBox1.Click += (s, e) => { pictureBox1.ImageLocation = ie == null ? null : ie.MoveNext() ? ie.Current : null; };
            }
        }
    }
    
[/code]




ローカル変数でIEnumeratorを１個だけ持ってもよければ可能ですが

[code]

    using System;
    using System.Linq;
    using System.Windows.Forms;
    namespace WindowsFormsApplication1
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
    
                System.Collections.Generic.IEnumerator<string> ie = null;
                label1.Click += (s, e) => { var d = new FolderBrowserDialog(); if (d.ShowDialog() == DialogResult.OK) label1.Text = d.SelectedPath; };
                label1.TextChanged += (s, e) => { ie = System.IO.Directory.GetFiles(label1.Text, "*.*").Cast<string>().GetEnumerator(); };
                pictureBox1.Click += (s, e) => { pictureBox1.ImageLocation = ie == null ? null : ie.MoveNext() ? ie.Current : null; };
            }
        }
    }
    
[/code]

