ループを使ってTextBox(PictureBox)にデータ貼り付けるには?

解決


ほほ  2013-07-29 13:33:02  No: 148212  IP: [192.*.*.*]

お世話になります。

■VB6で行っていたTextBox(PictureBox)にループを使って貼り付ける方法を
VB.NET 2010で行おうと考えています。

For i = 1 To 3

TextBox(i).Text=i

Next


■gogleより検索したところ次の方法があるそうですが、

dim txt(2) as textbox = { txtNo1, txtNo2, txtNo3 }

Dim MyControls As Hashtable = CreateControlCollection(Me) Dim i As Integer

For i = 1 To 3

MyControls("TextBox" & i).text = "Hello!"  など

Next


dim txt(2) as textbox = { txtNo1, txtNo2, txtNo3 }
↑この部分で  明示的な初期化は、明示的な環境で宣言された配列に対しては
許可されていません。とエラー出力ます。


Dim MyControls As Hashtable = CreateControlCollection(Me) Dim i As Integer
↑この部分でもエラーでていました。


別の方法でも構いません。何か良い方法を教えていただきたいです。
どうぞ、宜しくお願いします。

編集 削除
shu  2013-07-29 14:22:39  No: 148213  IP: [192.*.*.*]

Dim txts() as textbox = { TextBox1, TextBox2, TextBox3 }
Dim i as Integer

For i = 0 to 2
    txts(i).Text = "Hello!"
Next

こんな感じでどうでしょう?
txtsは実際にはPrivate変数として定義してForm内で常に使用可能なように
しておいた方が便利です。

編集 削除
ほほ  2013-07-31 18:09:57  No: 148214  IP: [192.*.*.*]

ありがとうございます。

上手くいきました!

TextBoxについてもう一つ質問させてください。

Hello などのデータを貼り付けるのですが、

Helloのときは、Backcolor を  赤にしたいのですが、
配列などを使って色を変更することはできるのでしょうか?

追加質問になりますが、どうぞ宜しくお願いします。

編集 削除
魔界の仮面弁士  2013-08-01 10:59:21  No: 148215  IP: [192.*.*.*]

> Helloのときは、Backcolor を  赤にしたいのですが、
赤にするだけですか?
それだけだと、赤くした TextBox の内容が "Hello" で
無くなったときも赤いままですが、それで良いのでしょうか。


> 配列などを使って
それって、TextBox の配列ですか? 色情報の配列ですか?
それともデータ内容(Helloなど)の配列ですか?

ここでいう「配列」が、何を指しているのか分かりませんが、
配列だと難しいのであれば、無理に使わなくとも良いかと思いますし、
配列が必要なら、好みに応じて利用すれば良いのでは無いでしょうか。


> 色を変更することはできるのでしょうか?
たとえば、「TextBox の TextChanged イベント」で、自身の Text を
If 文で調べ、それが "Hello" だった場合に、BackColor に
Color.Red をセットするコードを用意しておけば良いと思います。

イベント設定は、Handles で固定的に指定にしても良いですし、
AddHandler で動的に割り当てても良いでしょう。

あるいは Text をセットする時に、一緒に BackColor もセットする手もありますね。

編集 削除
ほほ  2013-08-01 15:09:23  No: 148216  IP: [192.*.*.*]

魔界の仮面弁士様  返答ありがとうございます。

>赤くした TextBox の内容が "Hello" で
>無くなったときも赤いままですが、それで良いのでしょうか。
IF文で"Hello"の時は赤を、それ以外は黒と考えています。

>それって、TextBox の配列ですか? 色情報の配列ですか?
>それともデータ内容(Helloなど)の配列ですか?Dim txts() as textbox = { TextBox1, TextBox2, TextBox3 }こちらを使ってになります。
次のようにMe.を加筆したところTextBox内の色を変えることができました。
{Me.TextBox1, Me.TextBox2, Me.TextBox3 }

>「TextBox の TextChanged イベント」
このような方法もあるんですね!参考になります。


PictureBoxでも同じような方法で動作確認し、この問い合わせを  ”解決済”にしたいのですが、他の作業が入ったので、なかなか先に進めない状況になりました。

確認できましたら、送球に”解決済”にしようと考えておりますので。
大変申し訳ありませんが、現状維持をお許しください。

編集 削除
ほほ  2013-08-03 12:09:31  No: 148217  IP: [192.*.*.*]

PictureBoxでも画像を貼り付けることができました。

shu様、魔界の仮面弁士様  ありがとうございます。

少しずつレベルアップしていこうと思います。

編集 削除