2016-06-24 8 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 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

ので、代わりのコピーを実行すると、このコードを貼り付けることができますこの

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 'その変数に代入することによってプロパティに代入されるように、その可変変数とプロパティの間に何らかの形で関係が作成されます。それはどのように動作するのではありません。そのプロパティに何かを割り当てることが予想される場合、それをそのプロパティに割り当てる必要があります。 2番目のコードスニペットは意味をなさないため、最初のコードスニペットが機能しないときに意味をなすため、機能します。 – jmcilhinney

+0

@jmcilhinneyありがとう、ええ、それは私が考えているものです。私はまだあなたが私に例を与えることができるかどうか、あるいはそれを正しく行う方法に関するリンクを与えることができるかどうかを理解していません。どうもありがとうございます。 –

+0

私が言っていることは、明らかにあなたがしたいことをする方法がないということです。あなたは、同じ場所を参照する2つのポインタを使用してポインタをサポートする言語でそれを行うことができますが、VBはポインタをサポートしていません。なぜあなたは最初にこれをしたいのですか?間違いなくあなたの要件を満たす方法になります。あなたの考え方だけではありません。 – jmcilhinney

答えて

1

方法について知りましたか? et?あなたは、単にメソッドに、第2 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

ああ、申し訳ありません。私はこれまで考えなかった。ありがとう!あなたのコードは私を助けます。 –

関連する問題