2012-08-30 5 views
1

내 numericUpDown 컨트롤의 정밀도가 0,5로 구성되었습니다. 값이 증가0,5의 퍼시션을 유지하면서 numericUpDown이 표시하는 것을 제어하는 ​​방법은 무엇입니까?

-changed decimalplaces to 1 
-changed increment to 0,5 
-maximum at 10 
-minimum at 0 

(10-0에서), I는 다음을 참조하십시오

0,0 
0,5 
1,0 
1,5 
... 
10,0 

내가 원하는 것은 :

0 
0,5 
1 
1,5 
... 
10 

이 작업을 수행 할 수있는 간단한 방법이 있나요 ? 감사합니다.

+0

이 WindowsForms, WebForms, 다른 뭔가 ...? –

+0

WindowsForms .net –

답변

4

ValueChanged 이벤트에서 처리하고 값이 반올림 된 값일 때 DecimalPlaces 속성을 비교할 수 있습니까?

+0

Thanks good idea !, http://pastebin.com/Dv5H05qQ –

2

Winform NumericUpDown 컨트롤과 overrideUpdateEditText 메서드를 this answer에 표시된 것과 같이 여기에서 비슷한 질문으로 확장 할 수 있습니다.

클래스는 다음과 같습니다

public class NumericUpDownEx : NumericUpDown 
{ 
    public NumericUpDownEx() { 
     // Optionally set other control properties here. 
     this.Maximum = 10; 
     this.Minimum = 0; 
     this.DecimalPlaces = 1; 
     this.Increment = ,5m; 
    } 
    protected override void UpdateEditText() { 
     // Remove any trailing ',5'. 
     this.Text = this.Value.ToString().Replace(".0", string.Empty); 
    } 
} 

접근에 이점은 당신이 다른 프로젝트에서 사용할 수있는 새 컨트롤을 만드는 것입니다.

+0

십진수가 두 자리 이상인 경우 의도하지 않은 문자를 대체 할 수 있습니다. UpdateEditText에서 문자열 표현에 소수 구분 기호가 포함되어 있는지 확인하고 TrimEnd ('0')를 사용합니다. – TheEvilPenguin

+0

@TheEvilPenguin 사용자가 자유롭게 숫자를 입력 할 수 있으면이 방법에 문제가있을 수 있습니다. 나는 OP가 이미 이것을 처리하고 있다고 가정하고 있지만 (아마도 컨트롤의'ReadOnly' 속성 = true), TrimEnd ('0')'를 사용하면 작업을 수행 할 때 소수점 구분 기호를 남길 수 있습니다. –

+0

그 좋은!,하지만 Turbot의 아이디어와 솔루션을 발견 .. : P –