2009-07-06 2 views
0

Compelete noob이 C#의 첫 번째 앱에서 작동합니다. 여기에 내가 뭘하려고하는지 ....KeyDown/KeyPress 및 인덱싱

사용자는 모든 숫자 "텍스트 상자에"ID "를 입력하려고합니다. 나는 알아 내기 위해 노력 해왔다 방법 함정 인스턴스의 ID 제로를 선도 :

5031

이 ID 에 대한 accepteble 것은 0827 우리가

기본적으로 원하지 않는 무엇을, 제로 시리즈에서 최고의 숫자가 될 수 없습니다 . 내 생각에, 이것은 색인을 통해 덫을 놓을 수 있지만 나는 뒤죽박죽이다. 이견있는 사람????

-Confused 사냥꾼

+0

0은 유효한 ID이거나 4 자리 (또는 일부 숫자 범위) 여야합니까? – SwDevMan81

+0

지금까지 모든 의견을 보내 주셔서 감사합니다. 이미 매우 도움이되었습니다. 나는 주목해야했는데, ID의 범위는 공개되어있다. 3 자리수, 4 자리 수 있습니다. scwagner ... 가능한 한 빨리 전체 0 자리를 검정색으로하고 싶습니다. – AvacadoRancher

답변

0
protected override void OnKeyDown(object sender, KeyEventArgs e) 
{ 
    e.Handled = ((this.SelectionStart == 0) && (e.KeyCode == Keys.D0)) 
} 
1

방법에 대해 뭔가 같은 ... 그것을 형식에 설정을 몇해야 할 수도 있습니다.

protected override void OnKeyPress(KeyPressEventArgs e) 
{ 
    if(this.SelectionStart == 0 && e.KeyChar == (char)'0') 
    { 
     e.Handled = true; 
     return; 
    } 
} 
0

키를 입력 할 때 0을 차단하거나 필드에서 벗어난 후 유효성 검사를 수행 하시겠습니까? 키 누르기를 보는 솔루션의 문제점은 잘못된 값이 클립 보드에서 붙여 넣어지면 내용을 모니터링하지 않는다는 것입니다.

해당 컨트롤 내에서 MaskedTextBoxOnValidating을보고 문제가 해결되는지 확인하십시오.

0

숫자를 상자에 입력하려면 TextBox 대신 NumericUpDown을 사용하십시오. 귀하의 경우 귀하의 ID는 항상 네 자리 숫자 인 것 같습니다. 따라서 최소값을 1000으로 설정하고 최대 값을 9999 (또는 그 이상 또는 Decimal.MaxValue)로 설정하십시오.