2014-10-22 4 views
0

두 개의 클래스가 있는데, 주 ​​클래스와 일부 숫자를 계산하는 클래스가 있습니다. 나는 남성 또는 여성을 선택하는 라디오 버튼으로 작업하고 있습니다. 여성 또는 남성이 선택하면 추적 할 부울로 필드가 있습니다. 이 필드는 isFemale라고 불립니다. 내가 원하는 것은 라디오 버튼을 선택한 것에 따라 메인 클래스에서 set 메소드를 호출하는 것입니다. 그리고 내가 선택한 것에 따라 남녀간에 다른 값을 계산합니다. 문제는 어떻게 든 Main 클래스의 set 메서드를 호출해도 계산 클래스의 isFemale 필드가 변경되지 않습니다.setMethod를 호출하면 부울 값이 변경되지 않습니다. VB

If btnFemale.Checked = True Then 

     bmrCalc.setGender(True) 
     MessageBox.Show("Woman") 
    ElseIf btnMale.Checked = True Then 
     MessageBox.Show("Man") 
     bmrCalc.setGender(False) 
    End If 

당신은 내가 라디오 버튼이 작동하고 그들이 있는지 확인하기 위해 몇 가지 메시지 상자를 포함 시켰 볼 수 있듯이 : 다음은 코드입니다. 유일한 문제는 bmrCalc.setGender (boolean)입니다. 내가 선택한 라디오 버튼에 관계없이 부울을 거짓에서 참으로 또는 그 반대로 변경하지 않습니다. 기본 부울은 어떻게 든 변경할 수 없습니다. bmrCalc 개체가 정상적으로 작동합니다. 다른 설정 메서드가 Double로 작동합니다.

Private isFemale As Boolean in the calculation class 

그리고 여기 내 계산 클래스의 setMethod를하다 : 무엇의

Public Sub setGender(ByRef female As Boolean) 
    isFemale = female 
End Sub 

요약 그러나 부울 여기

내 필드입니다 .. 어떻게 든 작동하지 않습니다 문제가 있습니다 : 기본 클래스에서 set 메서드를 호출해도 클래스 계산 인스턴스 필드의 부울 값이 변경되지 않습니다

아이디어를 얻길 바랍니다. 나는 VB를 사용하고있다

+1

내가 문제를 재현 할 수는 없지만해야 이 대신에 2 값 열거 형을 사용합니다 (Public Enum : Male : Female : End Enum). –

+0

어떻게 생겼습니까? – Shoxxer

답변

0

나는 tried 코드를 가지고 있고 그것은 기능을하는 것처럼 보인다. is가 설정된 후 부울 값을 올바르게 읽는다고 확신합니까? 코드를 단계별로 디버깅하거나 시계를 사용하십시오.

데이브가 제안한 것처럼, 대신 부울의 열거를 사용할 수 있습니다

Private _gender As Gender 

Public Sub setGender(ByRef gender As Gender) 
    _gender = gender 
End Sub 

Public Enum Gender 
    Male 
    Female 
End Enum 

당신은 다음처럼 설정할 수 있습니다

bmrCalc.setGender(BmrCalc.Gender.Male) 
bmrCalc.setGender(BmrCalc.Gender.Female) 
관련 문제