2016-06-24 2 views
0

클래스 이름이 intersection_regular_island이고 form1에 새 인스턴스를 만들었습니다. 나는 이런 식으로 할 경우, 그것은클래스의 변수 값을 내 양식의 변수에 넣기

Public Class form1 
    Dim a As New intersection_regular_island 
    Sub sampleSub() 
     a.leftA_pen = New Pen(Color.Green, a.arrowWidth) 
    End Sub 
End Class 

참고 노력하고 있습니다 반면 그래서 난 그냥 작은 부분입니다이 코드

Public Class form1 
    Dim a As New intersection_regular_island 
    Dim penToUse As Pen = a.leftA_pen 

    Sub sampleSub() 
     penToUse = New Pen(Color.Green, a.arrowWidth) 
    End Sub 
End Class 

을 시도하는 클래스의 특정 변수를 다시 선언하고 싶었다 코드의 실제 코드가 아닙니다. 그것은 어쩌면 내가 뭔가를 놓친 수도 삽화를위한 것입니다.

내가 그렇게 간단한 것을 놓친 것처럼 보입니까?

편집 : 나는 그래서 쉽게 코드를 복사 그래서 대신 select case

을 수행하고 붙여 넣기 할 수처럼하고 싶은

여러 번

Select Case lightFunctionNum 
      Case 1 
       a.leftA_pen = New Pen(Color.Green, a.arrowWidth) 
      Case 2 
       a.leftA_pen = New Pen(Color.Yellow, a.arrowWidth) 
      Case 3 
       a.leftA_pen = New Pen(Color.Red, a.arrowWidth) 
      Case 4 
       Dim blinkColorTrue As Color = Color.Green 
       Dim blinkColorFalse As Color = Color.Transparent 
       If blinkBoolean_A = False Then a.leftA_pen = New Pen(blinkColorFalse, a.arrowWidth) : blinkBoolean_A = True Else a.leftA_pen = New Pen(blinkColorTrue, a.arrowWidth) : blinkBoolean_A = False 
      Case 5 
       Dim blinkColorTrue As Color = Color.Yellow 
       Dim blinkColorFalse As Color = Color.Transparent 
       If blinkBoolean_A = False Then a.leftA_pen = New Pen(blinkColorFalse, a.arrowWidth) : blinkBoolean_A = True Else a.leftA_pen = New Pen(blinkColorTrue, a.arrowWidth) : blinkBoolean_A = False 
      Case Else 
       a.leftA_pen = New Pen(Color.Transparent, a.arrowWidth) 
End Select 

가 나는처럼되고 싶어 이

Select Case arrowAndPosition 
      Case arrowAndPositionChoices.A_Left 
       penToUse = a.leftA_pen 
      Case arrowAndPositionChoices.B_Left 
       penToUse = a.leftB_pen 
      Case arrowAndPositionChoices.C_Left 
       penToUse = a.leftC_pen 
      Case arrowAndPositionChoices.D_Left 
       penToUse = a.leftD_pen 
End Select 

Select Case lightFunctionNum 
     Case 1 
      penToUse = New Pen(Color.Green, a.arrowWidth) 
      Console.WriteLine("Trigger") 
     Case 2 
      penToUse = New Pen(Color.Yellow, a.arrowWidth) 
     Case 3 
      penToUse = New Pen(Color.Red, a.arrowWidth) 
     Case 4 
      Dim blinkColorTrue As Color = Color.Green 
      Dim blinkColorFalse As Color = Color.Transparent 
      If blinkBoolean = False Then penToUse = New Pen(blinkColorFalse, a.arrowWidth) : blinkBoolean = True Else penToUse = New Pen(blinkColorTrue, a.arrowWidth) : blinkBoolean = False 
     Case 5 
      Dim blinkColorTrue As Color = Color.Yellow 
      Dim blinkColorFalse As Color = Color.Transparent 
      If blinkBoolean = False Then penToUse = New Pen(blinkColorFalse, a.arrowWidth) : blinkBoolean = True Else penToUse = New Pen(blinkColorTrue, a.arrowWidth) : blinkBoolean = False 
     Case Else 
      penToUse = New Pen(Color.Transparent, a.arrowWidth) 

End Select 
+1

당신이 생각하는 것 펜 = a.leftA으로 희미한 penToUse'그 _pen'은 변수에 할당하면 속성에 할당하는 것과 같이 가변 변수와 속성 사이에 관계를 만듭니다. 그것이 작동하는 방식이 아닙니다. 해당 속성에 할당 할 내용이 있으면 해당 속성에 할당해야합니다. 두 번째 코드 조각은 의미가 없기 때문에 첫 번째 코드가 작동하지 않는 동안 의미가 있기 때문에 작동합니다. – jmcilhinney

+0

@jmcilhinney 고마워, 그래, 그게 내가 생각하는거야. 나는 아직도 당신이 의미하는 바를 이해하지 못한다. 나는 당신이 어떻게 그 일을 올바르게 수행 할 수 있는지에 대한 모범이나 예를 들어 줄 수 있을까? 정말 고맙습니다. –

+0

내 뜻은 분명히하고 싶은 일을 할 방법이 없다는 것입니다. 동일한 위치를 참조하는 두 개의 포인터를 사용하여 포인터를 지원하는 언어로이 작업을 수행 할 수 있지만 VB는 포인터를 지원하지 않으므로 수행 할 수 없습니다. 왜 정확히 처음부터 이렇게하고 싶습니까? 의심의 여지없이 귀하의 요구 사항을 충족하는 방법이 될 것입니다; 네가 생각하는 방식이 아니야. – jmcilhinney

답변

1

방법에 대해 알지 않습니까? et? 당신은 간단하게하는 방법으로 그 두 번째 Select Case을 넣어 :

Private Function GetPen(arrowWidth As Single) As Pen 
    Dim penToUse As Pen 

    Select Case lightFunctionNum 
      Case 1 
       penToUse = New Pen(Color.Green, arrowWidth) 
       Console.WriteLine("Trigger") 
      Case 2 
       penToUse = New Pen(Color.Yellow, arrowWidth) 
      Case 3 
       penToUse = New Pen(Color.Red, arrowWidth) 
      Case 4 
       Dim blinkColorTrue As Color = Color.Green 
       Dim blinkColorFalse As Color = Color.Transparent 
       If blinkBoolean = False Then penToUse = New Pen(blinkColorFalse, arrowWidth) : blinkBoolean = True Else penToUse = New Pen(blinkColorTrue, arrowWidth) : blinkBoolean = False 
      Case 5 
       Dim blinkColorTrue As Color = Color.Yellow 
       Dim blinkColorFalse As Color = Color.Transparent 
       If blinkBoolean = False Then penToUse = New Pen(blinkColorFalse, arrowWidth) : blinkBoolean = True Else penToUse = New Pen(blinkColorTrue, arrowWidth) : blinkBoolean = False 
      Case Else 
       penToUse = New Pen(Color.Transparent, arrowWidth) 

    End Select 

    Return penToUse 
End Function 

및 제 Select Case에 대한 메소드 호출 사실

Dim penToUse = GetPen(a.arrowWidth) 

Select Case arrowAndPosition 
    Case arrowAndPositionChoices.A_Left 
     a.leftA_pen = penToUse 
    Case arrowAndPositionChoices.B_Left 
     a.leftB_pen = penToUse 
    Case arrowAndPositionChoices.C_Left 
     a.leftC_pen = penToUse 
    Case arrowAndPositionChoices.D_Left 
     a.leftD_pen = penToUse 
End Select 

을, 당신도 당신이 할 수 있기 때문에에 arrowWidth을 통과하지 않았을 단지 그 방법은 Color를 반환 한 다음 외부 Pen을 만듭니다

Dim penToUse = New Pen(GetPenColor(), a.arrowWidth) 

Select Case arrowAndPosition 
    Case arrowAndPositionChoices.A_Left 
     a.leftA_pen = penToUse 
    Case arrowAndPositionChoices.B_Left 
     a.leftB_pen = penToUse 
    Case arrowAndPositionChoices.C_Left 
     a.leftC_pen = penToUse 
    Case arrowAndPositionChoices.D_Left 
     a.leftD_pen = penToUse 
End Select 
+0

오, 죄송합니다. 전에는 그렇게 생각하지 않았습니다. 감사! 당신의 코드가 나를 돕는다. –

관련 문제