2012-02-10 2 views
-2

어떻게 백 스페이스 0x08의 ASCII 값을 프로그래밍 방식으로 WinForms TextArea에서 사용합니까? 나는 콘솔 프로그램에서 시도 :사용 방법 0x08

Console.WriteLine("Hello" + (char)0x8 + "World"); 

내가 예상대로 보여줍니다

: 내가 값을 채우기 위해 윈폼 TextArea의 노력으로

HellWorld

txt.Text += "Hello" + (char)0x8 + "World"; 

다음과 같이 표시됩니다.

내가 어떤 텍스트 필드 이벤트로 액세스 혼자 0x8이의 값을 사용하여 예상대로 표시하기 위해 키보드의 이벤트를 사용 이외의 트리거 백 스페이스 이벤트를 만들기 위해 무엇

enter image description here

. 프로그래밍 방식으로 텍스트 필드에 "HellWorld"를 인쇄합니다.

+3

왜'(char) 8' 대신에 이전 문자를 삭제하지 않으시겠습니까? – CodesInChaos

+0

TextBox.Text의 인코딩 변경 .NET String에 대한 기본 인코딩이 무엇인지 잊어 버렸습니다. –

+1

그런 식으로 할 수 있다고 가정 해보십시오. 그리고 뭐? 그런 다음 "HellWorld"의 "W"앞에 커서를 놓고 백 스페이스를 누르면 백 스페이스를 제거하고 "HelloWorld"를 얻습니다. 그것은 사용자가 기대할 행동이 아닙니다. – hvd

답변

-2

backspace 문자는 최종 사용자가 이미 보낸 오타를 수정할 수 있도록 문자 단위로 서버에 입력을 보내는 씬 클라이언트에 도입되었습니다. 현대 응용 프로그램은 일반적으로 클라이언트 응용 프로그램이 사용자가 서버에 보내기 전에 데이터 입력을 마칠 때까지 대기하기 때문에 일반적으로 이러한 문자를 사용하지 않습니다.

그래서 TextBox 컨트롤에는 TextBox 컨트롤이 지원되지 않는 이유가 무엇인지, 그리고 왜 사람들이 왜 이것이 필요한지 궁금해하는 이유입니다.

어쨌든 TextBox의 텍스트를 설정하기 전에 데이터를 직접 사전 처리해야합니다. 예를 들어 정규 표현식을 사용하여이 동작을 시뮬레이션 할 수 있습니다.

+0

-1 : 문자와 아무런 관련이 없음 –

+0

나는 "문자 없음"및 "0x8 혼자만의 가치"라는 질문에 대해 오해 했음에 틀림 없어 문자를 처리해야한다고 생각합니다. –

+0

나는 문자 조작이 텍스트 상자의 문자를 지우거나 커서를 뒤로 이동하지 않는다는 것을 의미합니다. –

1

문자와 키 누르기는 직접 관련이 없습니다. 문자를 지우려면 텍스트 상자에 Backspace 키 누르기를해야합니다.

+0

downvote의 이유는 무엇입니까? _I_ 이유를 제시했습니다. –

+0

키보드의 이벤트를 사용하지 않고 백 스페이스 키 누르기로 대답했습니다. –

+0

죄송합니다. .NET을 작성하지 않았습니다. 문자열의 문자를 사용하여 원하는 것을 성취 할 수는 없습니다. –

0

당신은 누군가가 예를 들어, 당신은 SendKeys.Send() 사용하여 그렇게 할 수 있습니다, 텍스트 상자에 입력을 시뮬레이션 할 경우 예를 들어,

txt.Select(); 
SendKeys.Send("hello"); 
SendKeys.Send(((char)0x8).ToString()); // send backspace using 0x08 
SendKeys.Send("{BS}"); // send backspace using predefined code 
SendKeys.Send("world"); 

그러나 문자열을 사전 처리가 훨씬 간단 (안전한)를 보인다

var str = "hello"; 
txt.Text += str.Substring(0, str.Length-1); 

참고 : SendKeys.Send 활성 창에 키 입력을 보냅니다. 따라서 위 코드가 실행되는 동안 다른 창에 포커스가 있으면 키 입력이 다른 창에서 끝날 수 있습니다.

+0

창이 문제가되지 않습니다. –