清单:一次显示一个项目

时间:2017-09-05 20:17:41

标签: c# arrays wpf

我想有一个循环,它将遍历列表的每个元素一次。 如果单击该按钮,则消息框仅显示列表的第一个元素。如果第二次单击,则显示下一个元素,依此类推...

我使用以下代码在User类private void中创建:

    public void ClickNext()
    {
        List<int> test = new List<int>();
        test.Add(0);
        test.Add(1);
        test.Add(2);
        int next = test[index + 1];
        MessageBox.Show(next.ToString());
     }

int index在void之外初始化。

在窗口中代码呈现如下:

     private void buttonRight_Click(object sender, RoutedEventArgs e)
    {
       u1.ClickNext();
    }

我将不胜感激任何帮助。

3 个答案:

答案 0 :(得分:1)

显然,需要更多的东西才能与你正在做的事情一起工作。但核心概念只是声明你的索引并在每次点击后添加1。如果索引大于列表长度,您需要添加一些错误处理。

class Program
    {
        static void Main()
        {
            var test = new Clicker();
            test.ClickNext();
            test.ClickNext();
        }
    }

    class Clicker
    {
        public int Index { get; set; }

        public void ClickNext()
        {
            var listStr = new List<string>
            {
                "item 1",
                "item 2",
                "item 3"
            };
            var next = listStr[Index];
            Index++;
            MessageBox.Show(next);

        }
    }

答案 1 :(得分:0)

将计数器初始化为字段

private int counter = 0;

然后点击btn

 public void ClickNext()
{
   List<int> test = new List<int>();
        test.Add(0);
        test.Add(1);
        test.Add(2);

        int msg = test[counter%list.Count];
        MessageBox.Show(msg.ToString());
        counter++;
 }

说到最后一个元素,它将返回到开头(第一个元素)。

答案 2 :(得分:-1)

试试这个希望它的帮助

var Index=0; 
    public void ClickNext()
     {
            List<int> test = new List<int>();
           for(int i=0;i<=2;i++)
           {
            test.Add(i);
        //test.Add(0);
       // test.Add(1);
       // test.Add(2);

           }      
          if(Index<=test.Last())
             {
               MessageBox.Show(test[Index].ToString());
             }
          else{
              MessageBox.Show("End");
             //reset Index
             Index=0; 
             }
    }

     private void buttonRight_Click(object sender, RoutedEventArgs e)
        {

           u1.ClickNext();
          Index++;
        }