循环和数组 - 显示字符串

时间:2016-10-26 23:27:15

标签: c# arrays wpf string loops

我正在尝试使用以下代码显示一个组变量,其中包含从XAML中的代码(C#)到Textblock的字符串:

 Textblock1.Text = String1Class;
 Textblock2.Text = String2Class;
 Textblock3.Text = String3Class;
 Textblock4.Text = String4Class;
 Textblock5.Text = String5Class;
 Textblock6.Text = String6Class;

代码可以工作,但是一遍又一遍地写同样的东西很痛苦。 我想问一下是否有更好的方法。我知道它与数组和循环有关,但我对C#和WPF并不是很熟悉。

4 个答案:

答案 0 :(得分:1)

如果你想保持变量相同,你需要为每个StringXClass值分别设置变量:

var tbs = new [] { Textblock1, Textblock2, Textblock3, Textblock4, Textblock5, Textblock6, };
var scs = new [] { String1Class, String2Class, String3Class, String4Class, String5Class, String6Class, };

for (var i = 0; i < tbs.Length; i++)
{
    tbs.Text = scs;
}

另一种方法是首先设置一个数组。

var StringClass = new string[6];

然后在代码中将String1Class替换为StringClass[0],将String2Class替换为StringClass[1]等。

然后写下:

var tbs = new [] { Textblock1, Textblock2, Textblock3, Textblock4, Textblock5, Textblock6, };
for (var i = 0; i < tbs.Length; i++)
{
    tbs.Text = StringClass[i];
}

答案 1 :(得分:0)

这在很大程度上取决于您希望如何显示信息。例如,您可以使用List,并将项目写出TextBlock

List<string> stringsList = new List<string>() {

    "string1",
    "string2"
};

foreach (string s in stringsList)
{
    textBlock1.Text += s + @"\n";
}

答案 2 :(得分:0)

如果TextBlocks位于同一个父级中,您可以遍历它们:

string controlName = "TextBlock";
int startIndex = 1;
int endIndex = 100;

List<string>  stringList = new List<string>();
for(int i = 0; i < 100 ; i++)
    stringList.Add("string"+(i+1).ToString());

for(int i = startIndex; i<=endIndex; i++)
{
    foreach(control c in TextBlock1.Parent.Controls)//Or if you know the actual parent to which all the textBoxes belong
    {
        if(c.Name == (controlName+i))
        {               
            (c as TextBlock).Text = stringsList[i-1]; //since our start index starts with 1. 
            break;                   
        }
    }
}

答案 3 :(得分:0)

<强> XAML:

<StackPanel>
    <TextBlock Name="TextBlock1"></TextBlock>
    <TextBlock Name="TextBlock2"></TextBlock>
    <TextBlock Name="TextBlock3"></TextBlock>
    <TextBlock Name="TextBlock4"></TextBlock>
</StackPanel>

<强>代码:

TextBlock[] textboxes = { TextBlock1, TextBlock2, TextBlock3, TextBlock4 };
string[] list = { "TextBlock 1", "TextBlock 2", "TextBlock 3", "TextBlock 4" };

for (int i = 0; i < textboxes.Length; i++)
{
    textboxes[i].Text = list[i];
}

<强>输出:

enter image description here