TextBox를 사용하다 보면
그 안에. 특정한 형식만 입력하게 해야할때가 생길수도 있어요.

저같은 경우는
TextBox에 금액형식으로만 데이터가 들어가게 해야 해서
만들었습니다.

//키가 눌러졌을때
private void textbox_KeyPress(object sender, KeyPressEventArgs e)
{
       if (!(char.IsDigit(e.KeyChar) || e.KeyChar == Convert.ToChar(Keys.Back)))
       {
              e.Handled = true;
       }
}

//키가 (눌렸다가) 올라왔을때
private void textbox_KeyUp(object sender, KeyEventArgs e)
{
       TextBox thisText = sender as TextBox;
       text2Money(thisText);
}

//텍스트를 금액 형식으로
private void text2Money(TextBox tbx)
{
       tbx.Text = ConvertEx.DoubleToString(tbx.Text);
       if (tbx.SelectionStart == 0)
       tbx.SelectionStart = tbx.Text.Length;
}

두개의 이벤트와 한개의 메소드 인데요
더 간단하게 될수도 있겠지만
이게 제 한계. --ㅋㅋ

단점은
TextBox에 데이터가 있는 상태에서
커서를 맨 앞으로 가져올수가 없다는것과
데이터를 Double형으로 바꿔서. 크기에 제한이 있다는것

(저기 있는
ConVertEx.DoubleToString(string)은 따로 존재하는 메소드인데요
그냥 Double형으로 Parse한다던지 하면
데이터가 맞지 않을경우 Exception이 날수 있어서 따로 만들어둔거에요
(,도 붙여주구요)
별거 없음. ) 그래도 보나스~~
public static string DoubleToString(string szData)
{
       string szReturn = string.Empty;
       if (szData != "")
       {
              string szValue = szData.Replace(",", "");
              Double data = Double.Parse(szValue);
              szReturn = string.Format("{0:###,###,###,###,###,###}", data);
       }
       return szReturn;
}
by 피요히코~ 2009. 8. 20. 11:36
| 1 |