2016-04-12 3 views
0

コントロールの作成時に設定する必要があるプロパティとして、鉱山のコントロールにはList<Point>というプロパティがあります。個々のPointは、フォームのマウスクリックから取られなければならず、Visual StudioのDesignmodeで発生する必要があります。フォームをマウスでクリックしてカスタムコントロールのカスタムプロパティを設定する(DesignModeで)

私の考えは、元のフォームを複製するコントロールが作成されるたびに新しいフォームを開き、新しいフォーム上で少しクリックしてポイントを登録し、それらをリストプロパティに追加して新しい私が終わったときに形を整える。しかし、元のFormsプロパティを新しいプロパティに適用できないようで、実行時に発生しないためです。

この

は、私がこれまで持っているものである(私はそれがその原則については、あまりないです知っている):

Public Sub New() 
     InitializeComponent() 
     Dim myForm As Form = Me.FindForm() 
     Dim newForm As New newForm(myForm) 
     scrInput.Show() 
    End Sub 

新しいフォーム:

コントロールが作成された新しいフォームを表示します:

Public Class SourceForm 
    Private additionlHeight As Integer = 50 

    Public Sub New(ScrSource As Form) 
     InitializeComponent() 
     Me.Height = ScrSource.Height + additionlHeight 
     Me.Width = ScrSource.Width 
     Me.BackColor = ScrSource.BackColor 
    End Sub 
End Class 

新しいフォームに表示される更新された高さ、幅、または背景色はありません。

+0

Height、Width、BackColorを設定してから、Me.Refresh()を試してください。これでも動作しない場合は、 'Application.DoEvents()'を追加してください。あるいは、SoruceFormにクラス変数 'ScrSource'を追加し、それをコンストラクタに設定します。しかし、constrcutorのプロパティを調整する代わりに、SoruceFormの 'Load'イベントでHeight、Width、およびBackColorを設定します。 –

+0

まず、カスタムコントロールではなくUserControlのように見えます。 'List(Of Point)'プロパティを適切に定義すると、VS/IDEはコレクションエディタを起動します。 – Plutonix

+0

@アレックスB.あなたが示唆したすべてをしましたが、それでも動作しません。 @ Plutonix申し訳ありませんが、私は2つの違いがあることを認識していませんでした。実際にコレクションエディタを表示しますが、そのエディタでは必要なもの(マウスポインタごとのポイントを登録する)が得られません。 とにかくお世話になりました! – ziggystardust

答えて

0

ドキュメントのためだけに:

私は私の問題を解決するように見えます。私はさまざまなことを試みましたが、のLoad eventに新しいFormを作成すると最後に解決されたと思います。 Refresh()メソッドも役に立ちました。

ここに作業コードがあります。新しいFormクラスのための

Private Sub myControl_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load 
     Dim myForm As Form = Me.FindForm() 
     Dim controlInputForm As New myControlInputForm(myForm) 
     controlInputForm.Show() 
End Sub 

Public Class myControlInputForm 

     Private additionlHeight As Integer = 50 
     Private sourceForm As Form 

     Public Sub New(sourceForm As Form) 
      InitializeComponent() 

      Me.sourceForm = sourceForm 

      Me.Height = Me.sourceForm.Height + additionlHeight 
      Me.Width = Me.sourceForm.Width 
      Me.BackColor = Me.sourceForm.BackColor 

      Me.Refresh() 
     End Sub 
End Class 

EDIT:入力ミス制御のため。

関連する問題