プロが教えるわが家の防犯対策術!

Nameが

textbox1
textbox2
...
textbox10

と10個のtextboxがあったとして、

このそれぞれのtextに値を入れたいのですが、
1個ずつ書くのではなく、forとかで入れることは出来ますか?

たとえば以下のように、ループで○の部分を変更していくことは可能なのでしょうか?
for (int i=1; i<=10; i++)
{
textbox○.text = i.ToString();
}


よろしくお願いします。

A 回答 (3件)

>基本的にはボタンのクリックイベントの中に書いています。



こちらでは問題ありませんけど…なにが 違うんですかねぇ…。

>フォームのインスタンスで実行するなら、

インスタンスではなくコンストラクタでした。
まぁ、InitializeComponent()を実行した後であれば、可能な……ハズなんですけど。

半角での名前は、大文字小文字は区別しないで動作してくれるようですが、
いわゆる全角と半角は区別するでしょうから、その辺りの違いですかねぇ……。
    • good
    • 0

>「オブジェクト参照がオブジェクト インスタンスに設定されていません。


>とエラーが出てしまいました。

どこでそのコードを実行していますか?
というか…
># 指定した名前のコントロールが無かったとき例外発生するかも知れませんが。
かと思われますが。

フォームのインスタンスで実行するなら、
InitializeComponent();
の後でないとコントロールが作成されていませんからいぢろうとしても失敗しますよ。
# ~.Designer.csの中にあるInitializeComponent()を見てみましょう。
    • good
    • 0
この回答へのお礼

再度ありがとうございます。

うううう、、、なんか難しい内容になってきてついていけないです(汗)

基本的にはボタンのクリックイベントの中に書いています。

ちなみに最初のほうに
public Form1()
{
InitializeComponent();
}
とあるのですが、この中に書かないとダメってことでしょうか?

その下に、

private void button4_Click(object sender, EventArgs e)
{
処理
}

と、処理の中に書いてみてエラーが出てしまいました。。。

お礼日時:2013/07/19 02:11

>1個ずつ書くのではなく、forとかで入れることは出来ますか?



いくつか方法はあるかと思いますが……。

私なら…
TextBox[] TargetArray = new TextBox[] {textbox1, textbox2, textbox3, textbox4, textbox5, textbox6, textbox7, textbox8, textbox9, textbox10};

for(int i=0;i < TargetArray.Length;i++)
{
 TargetArray[i].Text = (i + 1).ToString();
}
とかやりまかねぇ。

for (int i=1; i<=10; i++)
{
 this.Controls["textbox"+i.ToString()].Text = i.ToString();
}
でも行けることはいけますかね。
# 指定した名前のコントロールが無かったとき例外発生するかも知れませんが。
    • good
    • 0
この回答へのお礼

さっそくの回答ありがとうございます。

for (int i=1; i<=10; i++)
{
 this.Controls["textbox"+i.ToString()].Text = i.ToString();
}
の方法をやってみたのですが、

「オブジェクト参照がオブジェクト インスタンスに設定されていません。」

とエラーが出てしまいました。

C#まだ始めて間もないので、簡単なミスかもしれませんが
調べても意味がわから中りませんでした・・・

よろしくお願いします。

お礼日時:2013/07/17 02:49

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A