2014-01-20 9 views
0

5 개의 NUD 컨트롤이있는 그룹 박스가 있습니다. 나는 모든 NUD의 합계 값을 제한하는 방법이 있는지, 그리고 제한된 값을 모두 합한 곳으로 제한을 설정 할지를 결정하려고합니다. 나는 학교에서 책을 읽었고 거기에서 그것을 찾지 못했고, 구글이 내가 찾는 답을 제공하고 있지도 않다. 이것은 내 프로젝트의 요구 사항이 아니며, 나는 그것에 대한 여분의 촉감이 좋을 것이라고 생각했습니다. 어떤 도움을 주시면 감사하겠습니다. 감사.VB.NET 복수 NUD

편집 :

내가 배열을 사용하여 시도하지만 여전히 NUD의 한계에 도달하면 상기 값을 증가 할 수없는 사람들을위한 방법을 찾기 위해 주위를 찾고, 내가 찾던 결과를 얻지 못하고 있었다

. 이것은 현재 내가하고있는 일이며 처리 방법이 마음에 들지 않습니다. 버튼이 없으면 총계가 요구 사항인지 아닌지 알아내는 것이 좋습니다.

+1

예 : 코드 작성 방법이 있습니다. 'Enter'와'ValueChanged' 이벤트를 사용하십시오. – Plutonix

답변

1

Plutonix에서 암시 된 것처럼 ValueChanged 이벤트를 사용하여 NumericUpDown 컨트롤의 현재 값을 검사 할 수 있습니다. 문제는 이전 값이 무엇인지 알려주지 않으므로 해당 값을 사전에 저장하는 것입니다.

Private oldNums As New Dictionary(Of NumericUpDown, Decimal) 
Private revertingValue As Boolean = False 

Private Sub num_ValueChanged(sender As Object, e As EventArgs) Handles _ 
             numForest.ValueChanged, _ 
             numFountain.ValueChanged, _ 
             numConstruct.ValueChanged, _ 
             numIntercept.ValueChanged, _ 
             numWaterFall.ValueChanged 
    If Not revertingValue Then 
    Dim numControl As NumericUpDown = sender 
    If Not oldNums.ContainsKey(numControl) Then 
     oldNums.Add(numControl, numControl.Minimum) 
    End If 

    If numForest.Value + numFountain.Value + numConstruct.Value + _ 
     numIntercept.Value + numWaterFall.Value > 30 Then 
     MessageBox.Show("Total photo prints needs to be below 30") 
     revertingValue = True 
     Try 
     numControl.Value = oldNums(numControl) 
     Catch ex As Exception 
     Finally 
     revertingValue = False 
     End Try 
     numControl.Select() 
    Else 
     oldNums(numControl) = numControl.Value 
    End If 
    End If 
End Sub