텍스트 상자의 KeyPress 이벤트에서 메서드를 실행하지만 메서드가 실행되고 전에 키가 실제로 상자에 입력됩니다.키 입력 후 키 누르기 메서드
KeyUp을 사용하는 경우에는 표준 문자뿐만 아니라 소프트 키의 KeyUp 트리거를 제외하고 내가 원하는 동작을 얻습니다.이 기능은 특히 유용하지 않습니다.
키를 상자에 입력 한 후 KeyPress를 실행할 수 있습니까? 또는 KeyUp에서 소프트 키를 무시하도록 쉽게받을 수 있습니까?
텍스트 상자의 KeyPress 이벤트에서 메서드를 실행하지만 메서드가 실행되고 전에 키가 실제로 상자에 입력됩니다.키 입력 후 키 누르기 메서드
KeyUp을 사용하는 경우에는 표준 문자뿐만 아니라 소프트 키의 KeyUp 트리거를 제외하고 내가 원하는 동작을 얻습니다.이 기능은 특히 유용하지 않습니다.
키를 상자에 입력 한 후 KeyPress를 실행할 수 있습니까? 또는 KeyUp에서 소프트 키를 무시하도록 쉽게받을 수 있습니까?
음, KeyPress 이벤트에서 keychar을 기억하고 기억 된 char을 사용하여 KeyUp에서 필요한 모든 로직을 수행 할 수 있습니다.
키 누르기 이벤트에서 textbox.Text
과 e.KeyChar
을 연결하여 새 문자열을 처리 할 수 있습니다.
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
string newString = textBox1.Text + e.KeyChar.ToString();
// Process newString
// If after processing you do not wish to undo the typed letter do
// e.Handled = true;
}
흠, 그리고 키를 눌렀을 때 텍스트 상자 중간에 커서가 있으면 어떨까요? – arbiter
또한 textbox
컨트롤에서 TextChanged
이벤트를 시도 할 수 있습니다.
사용 keyUp 등 코드로로 : 다른 문자에
private void textBox1_KeyUp(object sender, System.Windows.Forms.KeyEventArgs e)
{
//only do things when an alphabetical character is typed
if ((e.KeyCode >= Keys.a) && (e.KeyCode <= key.z) ||
(e.KeyCode >= Keys.A) && (e.KeyCode <= key.Z))
{
// do your thing
}
}
또한 당연히 확인할 수 있습니다 좋아.
KeyUp이 실행되면 텍스트 상자에 이미 누른 문자가 포함되어 있습니다. KeyPress에서 텍스트 상자 문자열과 keychar을 연결하여 코드가 올바른 값을 처리 할 수 있다고 가정합니다. – ChristianLinnell
글쎄,이 가능하다,하지만 당신이 생각보다 세게 : 커서가 텍스트의 중간에있을 수 있습니다 (당신은 숯불을 삽입해야합니다), 텍스트 상자 (숯불 선택 영역을 대체 할 수 있습니다), 당신은 올바르게 제어 문자 (탭, 백 스페이스 등). 어쩌면 질문을 업데이트하고 달성하고자하는 최종 결과를 알려줄 수 있습니까? – arbiter