2013-08-27 4 views
5

나는 그것의 작업을 더 this Link와 여러 TextBox 만드는하지만 난여러 줄 문제 WPF 텍스트 상자

위의 라인을 잘 작동하지만, 문제와

label1.Content = textBox1.Text.Length;

내가 누를 때 TextBox에 입력 한 것입니다 TextBox 텍스트 카운터를 설정하려면 카운터는 TextBox 카운터에서 2자를 증가시킵니다.

어떻게 도와 드릴까요?

도움을 주셨습니다.

newline 두 개의 기호로 제시하기 때문이다

답변

4

안드레이 고르 디프의 대답은 (그를 위해 +1) 권리 그러나 당신의 문제에 대한 직접적인 해결책을 제공하지 않습니다. 디버거로 textBox1.Text 문자열을 검사하면 \r\n 문자가 표시됩니다. 반면에 직접 (예 : .Replace을 통해) 영향을 주려는 경우 아무 것도 얻을 수 없습니다.

따라서 실제 질문에 대한 대답은 Environment.NewLine입니다. 샘플 코드 :

당신이 다음 방금 텍스트 상자에 PreviewKeyDown 이벤트를 처리하고 다음 핸들러 붙여 넣을 수 있습니다 "입력"에 하나 개의 문자를 필요로하는 경우
label1.Content = textBox1.Text.Replace(Environment.NewLine, "").Length; 
3

:

private void Txt_OnPreviewKeyDown(object sender, KeyEventArgs e) 
    { 
     if (e.Key == Key.Enter) 
     { 
      var txtBox = e.Source as TextBox; 
      var selectionStart = txtBox.SelectionStart; 
      txtBox.Text = txtBox.Text.Insert(selectionStart, "\n"); 
      txtBox.Select(selectionStart + 1, 0); 
      e.Handled = true; 
     } 
    } 
+0

마찬가지로 의견. Environment.NewLine의 "\ n"을 사용하는 특별한 이유는 없습니다. 사실, "\ n"은 대부분의 문자열 분석 방법에서 "무시"됩니다. 외관상으로는, OP는 "\ n"(줄 바꿈 문자를 고려하지 않고 문자열의 문자 수를 세는) 것에 의존하여 자신이 원하는 것을 얻을 수는 없지만 사용자의 대답을 좋아합니다. 그는 환경에 의존해야합니다 .NewLine. 나는 이러한 생각들이 미래의 독자들에게 분명히되어야한다고 생각한다. – varocarbas

+1

나는 매 초마다 혼란 스럽다 : 나는 당신의 코드를 테스트했고, 전혀 작동하지 않는다. 반면 논리적 인 것은 : 문자열 관리 방법 (texbox에서 무엇을하고 있는지)을 통해/n 문자에 영향을 줄 수 없다는 것입니다. 그럴 수있는 경우에, "enter effect"/ new line은 사라 졌을 것입니다. OP가 원하는 것이 아닌 것입니다. 이것은 나에게 너무 이상하다. 아! 내 설명 후 새로운 +1을 얻었습니다!? 흠 인상적! LOL. – varocarbas

0

대신 label1.Content = textBox1.Text.Length;

의 아래 코드를 사용을
label1.Text = textBox1.Text.Replace(Environment.NewLine, "").Length.ToString(); 

잊지 마십시오 추가 할 using System.Text;

관련 문제