2016-04-16 5 views
-1

I mybox1001bigのような多くのpicterboxオブジェクトを持つ、mybox1002big、mybox1003bigなどVB Visual Basic 2015文字列を使用して名前を設定する方法は?

私は次のようにいくつかの文字列または整数を使用してコードの選択名にしたい:

Dim ident as integer 
ident = 1002 
mybox[ident]big.Image = temporary.Image 

...しかし、これは動作しません。 。解決策は何ですか?

+0

https://msdn.microsoft.com/en-us/library/system.windows.forms.control.controlcollection.find%28v=vs.110%29.aspx – Steve

+0

だけで解決策を見ることができません、私の問題にそれを使用する方法? – loopack

+0

質問に適切なタグを付けると、より良い回答が得られます。 VBAは* NOT * vb.netです! –

答えて

0

Controlsコレクションを使用して、名前でコントロールを見つけることができます。

以下のコードは、コントロールがフォームの表面に直接存在することを前提としています。それはいくつかの他のコントロール内にネストされている場合は、適切にそのコントロール名でMeを置き換える:

Dim ident as integer 
ident = 1002 
Me.Controls("mybox" & ident.ToString & "big").Image = temporary.Image 
+0

ありがとうございます。 1つの問題があります: picTEMP1.Image = Me.Controls( "mag"&SWAPA.ToString& "box")画像 "="の後は赤色のエラーですので、 "me"ここに何が置かれたのか分かりません... – loopack

+0

どのようなエラーメッセージが表示されますか? –

0

さてあなたは、この方法は、ピクチャのためのすべてのフォームのコンテナのラウンドに行きたいならば、あなたは、このメソッドを使用することができます。

public static IEnumerable<T> GetControlsOfType<T>(Control root) 
where T : Control 
{ 
var t = root as T; 
if (t != null) yield return t; 

var container = root as ContainerControl; 
if (container != null) 
    foreach (Control c in container.Controls) 
     foreach (var i in GetControlsOfType<T>(c)) 
      yield return i; 
} 

はその後何このソリューションについては、この

ident = 1002 
foreach (var pictureBox in GetControlsOfType<PictureBox>(theForm)) 
{ 
    //Then use Pradeeps code here 
    //Me.Controls("mybox" & ident.ToString & "big").Image = temporary.Image 
    ident++; 
} 
0

ような何か?

Dim ident As Integer = 1002 
Dim name = String.Format("mybox{0}big", ident) 
Dim elem = TryCast(Me.Controls(name), picturebox) 
If elem IsNot Nothing Then elem.Image = ... 

これはオブジェクトのためのものです、どのように変数に使用するのですか?

Dim something1001this, something1002this, something1003this etc... 
Dim ident As Integer = 1002 
    Dim name = ... ? 
関連する問題