2017-10-06 15 views
0

Visual Studio 2017では、プロジェクトの同じ名前空間の下で、独自のファイルにSystem.Windows.Forms.TextBoxを継承するクラスを作成しました。 Ctrlキー+キーボードショートカットを使用して、作成されたテキストボックス内のすべてのテキストを選択できるように、1つのメソッドProcessCmdKey()をオーバーライドするだけです。何らかの理由で複数行のテキストボックスは、何らかの理由でctrl +ショートカットを許可しません。私は、アプリケーションを構築し、それを実行する私は私の子供のテキストボックスに入力することはできません。アプリのためのメインテキストボックスに使用されているnotesTextBoxと呼ばSystems.Windows.Forms.TextBoxの子クラスでテキストを編集することはできません

Form1.Designerクラスで
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のオブジェクト(フィールド)を作成しています:ここではクラスがあります。 SelectLine()は、私が追加したコピーボタンの編集中の行を選択するために使用されています。私がプロジェクトをビルドすると、私はnotesTextBoxに自由にタイプすることができません。同じ方法でプロジェクトをビルドしても、Windows.System.Forms.TextBoxオブジェクトを使用すると、テキストボックスに自由に入力できます。 Ctrl + C、V、およびXはすべてITextBoxで動作しますが、その動作は親から継承されます。私は単純な間違いをしているように感じるが、助けを借りることは素晴らしいだろう。私に含める必要があるプロジェクトに関する追加情報をお知らせください

答えて

0

default: return false;をスイッチに追加してください。あなたの現在のコードはすべてのキーを食べます。

+0

yep、簡単なミス。ありがとう – Sudo

関連する問題