フォームを入力として受け取る関数を作成したいと考えています。私は渡されたフォームのコントロールのプロパティを使用する必要があります。例:関数内のフォームコントロールのプロパティを呼び出す
Private Sub Drawing(ByVal frm As Form)
X = frm.a.Left + frm.a.Width
End Sub
Visual Basicは、私が使用するこの方法を受け入れません。どうすれば解決できますか?
フォームを入力として受け取る関数を作成したいと考えています。私は渡されたフォームのコントロールのプロパティを使用する必要があります。例:関数内のフォームコントロールのプロパティを呼び出す
Private Sub Drawing(ByVal frm As Form)
X = frm.a.Left + frm.a.Width
End Sub
Visual Basicは、私が使用するこの方法を受け入れません。どうすれば解決できますか?
コードは次のようにする必要があります:
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
はあなたの問題の非常に曖昧な記述である「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)
'frm.a 。* 'も動作します。このコントロールは動的ではなく、他のフォームからアクセス可能なメンバ変数を持っています。また、 'i'は配列であり、' Left'プロパティはありません。あなたが意味するものは 'i(0)。左 'だったと思います。 –
oops ..そこにインデックスを入力するのを忘れてしまった...ありがとう@Vincent –