정수값만 입력가능한 TextBox 컨트롤

Eden·2023년 2월 22일
0
        private void tb_PreviewTextInput(object sender, System.Windows.Input.TextCompositionEventArgs e)
        {
            TextBox tb = sender as TextBox; // label textblock에서 응용가능
            Regex regex = new Regex("[0-9]"); // defalt정규식
            if (tb.SelectionStart ==0 && !tb.Text.Contains("-"))
            {
                regex = new Regex(@"[1-9]|-");
                e.Handled = !regex.IsMatch(e.Text);
            }
            else if (tb.SelectionStart == 0 && tb.SelectedText.Length >0)
            {
                regex = new Regex(@"[1-9]|-");
                e.Handled = !regex.IsMatch(e.Text);
            }
            else if(tb.SelectionStart == 0 && tb.Text.Contains("-"))
            {
                e.Handled = true;
            }
            else
            {
                e.Handled = !regex.IsMatch(e.Text);
            }
        }

경우의 수를 따지다가 훨씬 쉽고 간단한 방법이 떠 올랐다

		private void tb_PreviewTextInput(object sender, System.Windows.Input.TextCompositionEventArgs e)
        {
            TextBox tb = sender as TextBox;
            string text = "";
            if (tb.SelectedText == "")
                text = tb.Text.Insert(tb.SelectionStart, e.Text);
            else
            {
                text = tb.Text.Replace(tb.SelectedText, e.Text);
            }
            Regex regex = new Regex(@"^[1-9]\d*$");
            e.Handled = !regex.IsMatch(text);
		}
profile
주섬주섬..

0개의 댓글