2016-05-21 4 views
-2

フォームを入力として受け取る関数を作成したいと考えています。私は渡されたフォームのコントロールのプロパティを使用する必要があります。例:関数内のフォームコントロールのプロパティを呼び出す

Private Sub Drawing(ByVal frm As Form) 

    X = frm.a.Left + frm.a.Width 

End Sub 

Visual Basicは、私が使用するこの方法を受け入れません。どうすれば解決できますか?

答えて

2

コードは次のようにする必要があります:

Private Sub Drawing(ByVal frm As Form) 

    Dim i As Control() 
    i = frm.Controls.Find("a", True) 

    if i.Length <> 0 Then 
     X = i(0).Left + i(0).Right 
    End If 

End Sub 
+1

'frm.a 。* 'も動作します。このコントロールは動的ではなく、他のフォームからアクセス可能なメンバ変数を持っています。また、 'i'は配列であり、' Left'プロパティはありません。あなたが意味するものは 'i(0)。左 'だったと思います。 –

+0

oops ..そこにインデックスを入力するのを忘れてしまった...ありがとう@Vincent –

1

はあなたの問題の非常に曖昧な記述である「Visual Basicは、私が使用してこのメ​​ソッドを許可していません」。私たちが心配しているわけではないので、明確な情報が得られなければ何が問題なのかを知ることができないので、あなたが得たエラーと結果が何であるかを特定する必要があります。

しかし、コントロール/フォームのX位置を変更しようとしている場合は、Locationプロパティ全体を変更する必要があります。

変更現在のフォームのX-位置:

Me.Location = New Point(frm.a.Left + frm.a.Width, Me.Location.Y) 

変更コントロールのX位置(YourControlは、移動したいコントロールの名前です):

YourControl.Location = New Point(frm.a.Left + frm.a.Width, YourControl.Location.Y) 
関連する問題