-1

重複の可能性:
C# winform でコントロールを名前で検索する

私はそれを説明しようとします..だから私はforループを持っていて、サイクル整数と等しいテキストボックス番号をロードしたいたびに。

これが私のコードです:

for(int i=1 ; i<=indulok+1 ; i++)
{
    StreamWriter sw = new StreamWriter("futamok/"+comboBox1.Text + "/" + indulok + ".txt");
    sw.WriteLine(textBox1.Text);
    sw.Dispose();
}

次に、textBox1.Text を次のように置き換えます。

sw.WriteLine(textBox + i + .Text);

しかし、これはもちろん機能していません。

4

3 に答える 3

5

これは、名前でコントロールを見つける代替手段です。

        for (int i = 1; i <= indulok + 1; i++)
        {
            if (this.Controls.ContainsKey("textBox" + i.ToString()))
            {
                TextBox txtBox = this.Controls["textBox" + i.ToString()] as TextBox;
                if (txtBox != null)
                {
                    string FileName = "C:\\" + i.ToString() + ".txt";
                    System.IO.File.WriteAllText(FileName, txtBox.Text);
                }
            }
        }

コントロールが他のコントロール (GroupBox など) 内にネストされている場合は、Find 関数を使用する必要がある場合があります。

        for (int i = 1; i <= indulok + 1; i++)
        {
            Control[] controls = this.Controls.Find("textBox" + i.ToString(), true);
            if (controls.Length > 0)
            {
                TextBox txtBox = controls[0] as TextBox;
                if (txtBox != null)
                {
                    string FileName = "C:\\" + i.ToString() + ".txt";
                    System.IO.File.WriteAllText(FileName, txtBox.Text);
                }
            }
        }
于 2013-01-24T20:37:18.003 に答える
3

テキストボックスをある種のインデックス付きコレクションに入れることができます。その最も単純なものは配列です

だから、あなたが次のような配列を持っていたと仮定します

textBox[] textBoxes

その後、あなたは呼び出すことができます

sw.WriteLine(textBoxes[i].text);
于 2013-01-24T20:26:50.587 に答える
0

ある種のWindowsフォームプロジェクトを実行していると思いますか?もしそうなら、Controls-arrayをループして、すべてのテキストボックスを見つけることができます。

foreach (Control c in this.Controls)
{
    if (c.GetType() == textBox1.GetType())
        sw.WriteLine(c.Text);
}
于 2013-01-24T20:50:54.870 に答える