2

私は次のコードを試しています:

for (int i = 0; i < students.Length; i++)
{
    "student" + i.ToString().Text = students[i];
}

私はすでに学生1学生2学生3のような名前のラベルをたくさん持っています。.

しかし、私はこのエラーを受け取りました:エラー1「文字列」には「テキスト」の定義が含まれておらず、タイプ「文字列」の最初の引数を受け入れる拡張メソッド「テキスト」が見つかりませんでした(使用ディレクティブまたはアセンブリ参照がありません?) F:\Homework\Homework\Form1.cs 161 46 宿題

何か助けてください??!

4

4 に答える 4

8

ほぼすべての言語で、動的変数名を持つことはできません。

コントロールのコレクションまたは配列を探しているようです。

何かのようなもの:

var studentControls = new List<Control>();
studentControls.Add(student1); 
studentControls.Add(student2);
...
for (int i = 0; i < students.Length; i++)
{
    studentControls[i].Text = students[i];
}
于 2013-01-24T10:34:37.690 に答える
3

Controls.Find("学生" + i.ToString()) を使用する

于 2013-01-24T10:35:39.017 に答える
3

これは役立つかもしれません

Controls.Find(string.Format("student{0}", i));

より良い解決策:

Tag次のようにプロパティを設定しLabelsます。

Student1.Tag = 1;
Student2.Tag = 2;
Student3.Tag = 3;

Labelsという名前のコンテナー コントロールにいると仮定しますcontainer。このコードを使用してください:

foreach(var item in container.Children) //based on your container type this line may change
{
    if(item is Label)
    {
        Label temp = ((Label)item);
        temp.Text = students[int.Parse(temp.Tag.ToString())]
    }
}
于 2013-01-24T10:36:39.540 に答える
0

そうi.ToString()することで、プロパティ Text を持たない文字列が与えられます:)。それがあなたの例外の原因です。

Studentsがプロパティを持つコントロールのリストである場合は、.Textそれを使用してToString()elseを削除し、.Text.

于 2013-01-24T10:42:30.297 に答える