현재 작업중인 다른 프로젝트에 필요하기 때문에 어셈블리에있는 클래스가 있습니다. 하나의 클래스는 클래스 팩토리를 호출하고 클릭 이벤트 핸들러가 연결되어야하는 컨트롤 그룹을 만들고, 특정 기능을 기반으로 다형성 동작을 결정하는 알고리즘이 있지만 상대적으로 적합하지 않습니다. 이벤트 처리기가 내 어셈블리의 일부가 아닌 특정 폼을 열어야하고이 폼이이 "팩토리"클래스를 필요로하기 때문에. 순환 참조를 만들지 않고 양식의 핸들러 이벤트를 본질적으로 "위임"할 수있는 방법이 있습니까?순환 참조를 작성하지 않고 양식에 이벤트 위임
간단한 작업으로 두 개의 별도 클래스를 유지해야했습니다. 하나는 프로젝트의 양식과 하나는 어셈블리에 보관해야했습니다. 이것은 분명히 잘못된 길입니다.
내가 뭘 하려는지 알지만 100 % 확실하지는 않습니다. 어떻게해야할지 모르겠습니다.
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.Width = 1500
Dim panel As New Panel
panel.Location = New Point(0, 0)
panel.Size = New Size(1000, 200)
panel.BackColor = Color.Yellow
Me.Controls.Add(panel)
Dim factory As New DrawFactory
factory.DrawPanel(panel, 5)
End Sub
위는 클래스 라이브러리에 다음 코드를 별도의 프로젝트에 있습니다
Public Class DrawFactory
Private xOffset As Integer = 0
Private Const widthConst As Integer = 50
Public Sub DrawPanel(ByRef panel As Panel, ByVal drawPanels As Integer)
Application.DoEvents()
For i As Integer = 0 To drawPanels
Dim childPanel As New Panel
childPanel.Location = New Point(xOffset, 0)
childPanel.Size = New Size(widthConst, panel.Height)
If i < 1 Then
childPanel.BackColor = Color.Blue
Else
childPanel.BackColor = Color.Pink
End If
xOffset = xOffset + widthConst
''want to add a handler here to open say form5 which is unknown and undefined in the scope of this class
panel.Controls.Add(childPanel)
Next
End Sub
End class
이 내 실제 코드는 아니지만 내가 '문제의 JIST를 묘사 내가 직면 한 C#이나 VB.NET에서는 답을 신경 쓸 필요가 없다.
문제를 보여주는 간단한 가상의 예제를 작성하십시오. –
@SteveDog 요청한대로 샘플을 추가했습니다. – Tyson
양식에있는 이벤트 처리기를 childPanels의 이벤트에 추가하려고합니까? 그렇다면 어떤 사건입니까? –