【问题标题】:C#, Cycle through TextBlock on button press, So closeC#,在按下按钮时循环遍历TextBlock,如此接近
【发布时间】:2013-05-09 15:09:42
【问题描述】:

所以我在 C# 中工作,有点初学者,我四处搜索但找不到任何东西。

我的屏幕上有一个 TextBlock 和一个 Button,每次按下按钮时,我都希望新文本成为 TextBlock 的内容,这是我目前所拥有的,但它只显示最后一行,谢谢。

 string[] arr = new string[4]; 
        arr[0] = "Hello and Welcome";               
        arr[1] = "To the new app";             
        arr[2] = "enjoy your stay";             
        arr[3] = "press next to continue";          

        for (int i = 0; i < arr.Length; i++)
        {
            string s = arr[i];
            tbArray.Text = s;
        }

【问题讨论】:

  • 您在此处编写的所有代码都将在您按下按钮一次时执行。所以它会一次完成整个 for 循环,显然在最后一行结束。您需要将其 提前 一行,例如,记住最后一行,然后添加一行。 (您可以使用 % 4 ,也就是除以 4 的余数,转到 0 而不是 4 从而环绕)
  • 我想你想要tbArray.Text += s;

标签: c#


【解决方案1】:

您没有存储每个字符串,而只存储最后一个。

在等号之前添加一点+,如下所示:

string[] arr = new string[4]; 
arr[0] = "Hello and Welcome";               
arr[1] = "To the new app";             
arr[2] = "enjoy your stay";             
arr[3] = "press next to continue";          

for (int i = 0; i < arr.Length; i++)
{
    string s = arr[i];
    tbArray.Text += s;
}

添加一个空格或新行也很好,因为它们会以这种方式被挤压在一起。

【讨论】:

  • 这一次显示所有文本,我想要它,所以它首先会在位置 0 显示数组中的文本,然后当再次按下按钮时,它会在 [1] 等处显示它: )
【解决方案2】:

如果我理解正确,您希望每次按下按钮时都显示数组中的下一个元素?您应该将数组的当前索引存储在类中的变量中,并且每次按下按钮时都会增加其值。显然,请确保检查您的索引是否超出范围。

public class Foo
{
    private int index = 0;

    private string[] arr = new [] { "Hello and Welcome",
                                    "To the new app",
                                    "enjoy your stay",
                                    "press next to continue" };     

    private void ButtonCallback(...)
    { 
         tbArray.Text = arr[index++]; 
    }
}

【讨论】:

  • 你能给我举个例子吗,对不起,我说我对编程很陌生,非常感谢
  • 我无法想象这怎么行不通。确保 index 是您班级中的一个字段,数组也是如此。
  • 啊哈,是的,现在可以完美运行了,谢谢!我将如何停下来确保它没有越界!
  • 一个简单的 if 语句检查以确保 index &lt; arr.Length 如果不是,我想您希望将 index 设置回 0 以再次循环浏览所有文本。
  • 非常感谢您的帮助! :)
【解决方案3】:

我想你总是会看到"press next to continue" 字符串。因为这是分配给文本框的 last 字符串。您必须将所有字符串聚合到一个单独的字符串中,最后一个字符串分配给一个文本框。

简单示例:

StringBuilder sb = new StringBuilder(); 
for (int i = 0; i < arr.Length; i++)
{
  sb.Append(arr[i]); 
}

tbArray.Text = sb.ToString();

【讨论】:

    【解决方案4】:

    如果您想在每次按下按钮时显示数组中的新文本

    全局“i”变量和您的数组“arr”

    /* global variable */
    var i = 0;
    /* your array - e.g. javascript array */
    var arr = ['Hello and Welcome', 
                'To the new app', 
                'enjoy your stay', 
                'press next to continue'];
    

    调用这个函数

     function displayText() {
            if(i >= arr.length) {
                i=0;
            }
            yourTextBlock.Text = arr[i];
            i++;
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多