2017-10-06 6 views
0

Visual Studio 2017에서 프로젝트의 동일한 네임 스페이스 아래에 자체 파일에 System.Windows.Forms.TextBox를 상속 할 클래스를 만들었습니다. Ctrl + 키보드 단축키를 사용하여 생성 된 텍스트 상자의 모든 텍스트를 선택할 수 있도록 한 메서드 만 ProcessCmdKey()를 재정의합니다. 어떤 이유에서든 여러 줄의 텍스트 상자는 어떤 이유로 든 Ctrl + 바로 가기를 허용하지 않습니다. 내가 애플 리케이션을 빌드하고 그것을 실행하면 내 아이 텍스트 상자에 전혀 입력 할 수 없습니다. Form1.Designer 클래스에서Systems.Windows.Forms.TextBox 자식 클래스는 텍스트를 편집 할 수 없습니다.

namespace Amatechtel_Notetaker 
{ 
public class ITextBox : System.Windows.Forms.TextBox 
{ 

    protected override bool ProcessCmdKey(ref Message msg, Keys keyData) 
    { 
     switch (keyData) 
     { 
      case Keys.Control | Keys.C: 
       Copy(); 
       break; 
      case Keys.Control | Keys.V: 
       Paste(); 
       break; 
      case Keys.Control | Keys.X: 
       Cut(); 
       break; 
      case Keys.Control | Keys.A: 
       SelectLine(); 
       break; 
     } 
     return true; 
    } 

    //selects the current line of text for the formatting methods and allows 
    //for formatting shortcuts (e.i. ctrl+c, ctrl+a, ect) to be used. 
    internal void SelectLine() 
    { 
     SendKeys.Send("{HOME}"); 
     SendKeys.Send("+{END}"); 
    } 
} 
} 

내가 객체 (필드)을 생성하고 ITextBox이 notesTextBox 전화의 응용 프로그램의 주요 텍스트 상자에 사용되는 : 여기에 클래스입니다. SelectLine()은 내가 추가하고 나중에 구현할 복사 버튼에 대해 편집중인 현재 행을 선택하는 데 사용됩니다. 프로젝트를 작성할 때 notesTextBox에 자유롭게 입력 할 수 없습니다. 같은 방법으로 프로젝트를 작성했지만 Windows.System.Forms.TextBox 객체를 사용하면 텍스트 상자에 자유롭게 입력 할 수 있습니다. Ctrl + C, V 및 X는 모두 ITextBox에서 작동하지만 부모로부터 상속 된 동작입니다. 나는 단순한 실수를하고있는 것처럼 느껴지지만, 아무 도움도 도움이되지 않을 것입니다. 포함해야 할 프로젝트에 대한 추가 정보를 알려주십시오.

답변

0

스위치에 default: return false;을 추가하십시오. 현재 코드가 모든 키 누르기를 먹습니다.

+0

예, 간단하게 실수를하지 마십시오. 고마워요. – Sudo