• ベストアンサー

pictureboxの名前を変数で設定したい

form1に100個のpicturbox(picturebox1~picturebox100)が乱雑に貼り付けられていて pictuteboxのleftとtopをプログラムで指定したいのですが picturboxの名前を変数でとるにはどうしたらよいでしょうか。 (処理に内容で配置が変わるため変更したい) 下記では上手くできませんでした。 for i=1 to 100 Dim pic As PictureBox = Me.Controls("PictureBox" & i).left=xx(i) next 環境 windows 7 Microsoft Visual 2010 express

質問者が選んだベストアンサー

  • ベストアンサー
  • freetaka
  • ベストアンサー率53% (106/197)
回答No.1

こんな感じで配列として扱うことができます Public Class Form1 Private PictureBoxs(100) As PictureBox Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load For i As Integer = 1 To 100 PictureBoxs(i) = Controls("PictureBox" & i) Next 'TESTです(左上にPictureBoxの背景を赤にして移動) PictureBoxs(1).BackColor = Color.Red PictureBoxs(1).Top = 0 PictureBoxs(1).Left = 0 End Sub End Class

obone
質問者

お礼

上手くいきました。ありがとございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • pictureBoxそのものの位置を移動させたい

    pictureBoxそのものの位置を移動させたくその方法を教えていただけないでしょうか。 変数iを用意して、iの値が変わるたびにpictureBoxそのものが動いているように見せかけたいと思ってます。 下記のようにやってみたのですが、間違っているようです。 どう修正したいら良いかわかりません。 Dim i as integer PictureBox1.Location.X = i ご教授願えないでしょうか。

  • 起動時にPictureBox内に絵を描きたい

    VB2005において、Form1上にPictureBox1を配置し、 起動時にPictureBox内に絵を描きたいと思っています。 ApplicationEvensVb内に以下のように 本来PictureBox1のプロシージャ内に記述したコマンドを記述しましたが、 ・型PictureBox1.CreateGraphicsが定義されていません。 ・名前PictureBox1は定義されていません。 というエラーが出てしまいます。 無事に絵を描くにはどうしたらいいのでしょうか? Partial Friend Class MyApplication Private Sub MyApplication_Startup(ByVal sender As Object, ByVal e As Microsoft.VisualBasic.ApplicationServices.StartupEventArgs) Handles Me.Startup Dim g As Graphics = New PictureBox1.CreateGraphics() g.DrawLine(Pens.Black, 0, 540, PictureBox1.Width, 540) End Sub End Class

  • 変数を動的に作るには?

    変数を作成する際には必要な分だけ一つずつ宣言する必要があるのでしょうか? 例えば、連番を格納する文字列型変数を一時的に100個必要だとすると Dim textdat1 As String = "Number1" Dim textdat2 as String = "Number2" Dim textdat3 as String = "Number3"      ・      ・      ・ と100個宣言しないといけないと思うのですがこれを For i As Integer = 1 To 100 Dim textdat(i) As String = "Number" & i Next i という様な形で変数を作成することは出来ないのでしょうか。 初歩的な質問かもしれませんが、よろしくお願いします。

  • PictureBoxの描画について

    VB2005を使用してPictureBoxに線を描きました。  Dim g As Graphics = PictureBox1.CreateGraphics()  g.DrawLine(p, X1, Y1, X2, Y2) 線は上手く描けたのですが、表示している画面(Form)を最小化して再度最大化すると、描いた線が消えてしまいます。FormをHideしてもう一度Showしても同じです。 この描画を消さないようにするには、どうすればよいでしょうか?

  • VB2008でPictureBoxをキーボードを使って動かしたい

    VBを始めたばかりの初心者です。 VB2008を使ってPictureBoxに取り込んだイラストをキーボードを使って自由に動かしたいと思っています。 今作ったものの問題点 1.現状、全く同時に→と↑のキーを押せば右上に動きます。  また、→キーを押してイラストが右に動いているときに、↑キーを押すと上に動きます。  これを右上に動くようにする方法が知りたいのです。 2.キーを押し続けてイラストを動かし続けようとすると、一回動いて止まってから動き続けるという風になってしまいます。  これを止まらずに動くようにしたいのです。 ちなみにこれ↓が今のソースコードです。 Public Class Form1 Private Sub form1_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown If e.KeyCode = Keys.Up Then PictureBox1.Top = PictureBox1.Top - 10 End If End Sub Private Sub form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown If e.KeyCode = Keys.Down Then PictureBox1.Top = PictureBox1.Top + 10 End If End Sub Private Sub form1_KeyLeft(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown If e.KeyCode = Keys.Left Then PictureBox1.Left = PictureBox1.Left - 10 End If End Sub Private Sub form1_KeyRight(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown If e.KeyCode = Keys.Right Then PictureBox1.Left = PictureBox1.Left + 10 End If End Sub End Class これ↑を実行する場合は、デザインにPictureBoxを表示してください。PictureBoxに入れるイラストは適当なものを入れてください。 よろしくお願いします。

  • エクセルVBAでの変数

    いつもお世話になります。 今回の『壁』は”変数”です。 変数の中に更に変数を持たせることはできますか? 何をしたいかと言いますと… dim mon1 as string dim mon2 as string dim mon3 as string dim mon4 as string dim mon5 as string dim tue1 as string dim tue2 as string …というように月曜から日曜までの頭3文字プラス1~5の組み合わせの変数を作りたいのですが、 この調子で作っていくと35コになってしまいます。 そこで、曜日の頭3文字より後ろは決まって1~5のため、 dim i as integer for i = 1 to 5 next i …と組み合わせられないかと思ったのです。 どなたか知恵をお貸しください。 よろしくお願いします。

  • 変数の宣言について

    VBですけれども 変数の宣言なしに For i  ・  ・   ・ Next i などを記述しますと「変数の宣言がされていません」 というメッセージがでるのですが、テキストなどでは 変数の宣言などしていなくとも動作しますこれはどうして どういうことなのかご存知の方教えてください。 Dimとかの宣言もなしにです。 著書は 独習Visual Basic 6.0 などです。

  • VB .net Form_Load時、または関数内でPictureBoxにライン描画を行ないたい。

    Form上にPictureBox,Buttonを配置して、Botton_Click処理時にPictureBox上へのライン描画は Dim g As Graphics = PictureBox1.CreateGraphics g.DrawLine(Pens.Red, 0, 0, 100, 200) g,Dispose() にて行なえましたが、同じような描画を Form_Load時に上記の処理を入れても全く描画されません。Button_Clickイベントのように1クッション置かないと実現できないのでしょうか? Form_Load時、関数内などで周期的にライン描画を 行なってやりたいのですが、どなたか解決方法をご存知の方がいましたら回答の程よろしくお願いいたします。

  • 変数が増えてしまうのはなぜだか教えてください。

    こんにちは、マクロ初心者ではないつもりですが、基本ができていないのか、以下のSubで、変数の値が増えてしまいます。i = 3のままだと思っていたのですが、シートが移動するにつれてiの値が増えてしまうのは何故でしょうか。教えてください。 Sub tes() Dim i As Integer Dim ws As Worksheet i = 3 Debug.Print i For Each ws In Worksheets ws.Select For i = 1 To i Debug.Print i Cells(i, i) = i Next Next End Sub 新規のブックに書きました。Sheetは1~3です。

  • 変数が勝手に変わります

    Dim i As Integer:Dim i2 As Integer:Dim card(5) As Integer:Dim expectPoint0card(1) As Integer '0枚のカードを交換する場合のすべての選択肢の期待値 Dim expectPoint1card(5) As Integer Sub porkerGame() card(1) = 1: card(2) = 2: card(3) = 3: card(4) = 4: card(5) = 5 getExpectPoint1card expectPoint1card End Sub Sub getExpectPoint1card(expectPoint1card() As Integer) Dim tesu1 As Integer:Dim sum1 As Integer For i = 1 To 5 getTesuSum1 i, tesu1, sum1 expectPoint1card(i) = sum1 / tesu1 Next i End Sub Sub getTesuSum1(rowNumber As Integer, tesu1 As Integer, sum1 As Integer) Dim card2(5) As Integer:tesu1 = 0:sum1 = 0 MsgBox rowNumber copy card, card2, 5 MsgBox rowNumber For i = 4 To 55 MsgBox rowNumber card2(rowNumber) = i addTesuSum card2, tesu1, sum1 Next i End Sub Sub copy(row() As Integer, row2() As Integer, i2 As Integer) For i = 1 To i2 row2(i) = row(i) Next i End Sub 上記のプログラムで、ウィンドウに1,6,4,5,6と表示され、その次には、エラーが表示します。僕は、ウィンドウに表示される変数RowNumberの値がしばらくの間は1のままであるようにプログラムを書いたつもりなのですが、変数rowNumberの値が変わるのは、どうしてでしょうか?教えてください。お願いします。