アプリ版:「スタンプのみでお礼する」機能のリリースについて

TextBoxに入力された値の数だけ
ボタンを生成したいのですが、
配列(ArrayList)にオブジェクト名を追加し、
For Eachで全件処理をしてもボタンのオブジェクト
名がうまく宣言できず生成したボタンに対し、
色の設定ができません。

.NETのバージョンは2003で、Frameworkのバージョンが1.0です。

良い解決方法があれば教えてください。

A 回答 (4件)

こんばんは。



動的にコントロールを配置する
http://vbdotnet.fc2web.com/vbnet/control/Control …
参考にどうぞ。

この回答への補足

回答ありがとうござます。
続けての質問申し訳ありませんが、
サンプルソースの部分の

Private btnArray(9) As Windows.Forms.Button

この部分をローカル(Form_Loadなど)で行いたいのですが、またそれが出来ない場合、この部分を動的に宣言することは出来ますか

補足日時:2006/07/13 11:43
    • good
    • 0
この回答へのお礼

ありがとうございます。
大変、参考になりました。

お礼日時:2006/07/24 19:27

こんばんは。



私の単純なミスですね。

Me.btnArray = New System.Windows.Forms.TextBox(Num) {}
         ↓
Me.btnArray = New System.Windows.Forms.Button(Num) {}

としてください。

ですが、これくらいの間違いは気づいて欲しいです。
Buttonを作るのだから、TextBoxだとおかしいと。
エラーメッセージを見ても分かりそうに思うのですが。
    • good
    • 0

No.2ですがミスがありましアタので訂正です。



>Me. = New System.Windows.Forms.TextBox(Num) {}
         ↓
Me.btnArray = New System.Windows.Forms.TextBox(Num) {}

としてください。

この回答への補足

返信ありがとうございます。
わかりずらい文章で申し訳ないです。
解釈としてはそのとおりです。

New System.Windows.Forms.TextBox(Num) {}

この部分で

'System.Windows.Forms.TextBox'は'System.Windows.Forms.Button'から派生していない、
型'System.Windows.Forms.TextBoxの一次元配列'の値を'System.Windows.Forms.Buttonの一次元配列'に変換できません

というエラーが出るのですがどうしたらいいですか

補足日時:2006/07/14 18:38
    • good
    • 0

質問の意味がよく分かりませんが、参考URLだとあらかじめ10個としているので、これをTextBoxに入力去れ炊かずにしたいと言うことでいいでしょうか。



まず
>Private btnArray(9) As Windows.Forms.Button
       ↓
Private btnArray() As Windows.Forms.Button

としてください。

サンプルではフォームのLoadイベントで行っていますが、TextBoxに入力してから行うためにTextBoxのValidatingイベントで行います。

Private Sub TextBox1_Validating(ByVal sender As Object, ByVal e As _ System.ComponentModel.CancelEventArgs) Handles TextBox1.Validating

'数値以外の入力はやり直し
If IsNumeric(TextBox1.Text) = False Then
e.Cancel = True
Exit Sub
End If

Dim I As Integer
Dim Num As Integer = Cint(Me.TextBox1.Text) - 1
Me. = New System.Windows.Forms.TextBox(Num) {}
For I = 0 To Num
'2-1)インスタンスを作成
btnArray(I) = New Windows.Forms.Button
'2-2)配置位置を設定
btnArray(I).Location = New Point(10, 10 + 20 * I + 2)
'2-3)Nameプロパティを設定
btnArray(I).Name = "Button" & I.ToString
'2-4)サイズを設定
btnArray(I).Size = New System.Drawing.Size(100, 20)
'2-5)TabIndexを設定
btnArray(I).TabIndex = I + 1
'2-6)ボタンテキストを設定
btnArray(I).Text = "ボタン" & I.ToString
'2-7)イベントハンドラの登録
AddHandler btnArray(I).Click, AddressOf ButtonClick
'2-8)フォームに配置
Me.Controls.Add(btnArray(I))
Next

End Sub

試してませんがこんな感じでしょうか。
    • good
    • 0

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