2017-10-06 4 views
0

In Visual Studio 2017 habe ich eine Klasse erstellt, die System.Windows.Forms.TextBox in einer eigenen Datei unter demselben Namespace für das Projekt erbt. Ich überschreibe nur eine Methode ProcessCmdKey(), so dass ich Strg + eine Tastenkombination verwenden kann, um den gesamten Text in dem Textfeld, das erstellt wird, auszuwählen. Mehrzeilige Textfelder erlauben aus irgendeinem Grund nur, dass Strg + eine Verknüpfung aus welchem ​​Grund auch immer. Wenn ich die App erstelle und sie ausführe, kann ich überhaupt nicht in mein untergeordnetes Textfeld tippen. Hier ist die Klasse:Untergeordnete Klasse von Systems.Windows.Forms.TextBox lässt mich keinen Text bearbeiten

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}"); 
    } 
} 
} 

In der Form1.Designer Klasse Ich erstelle ein Objekt (Feld) von ITextBox notesTextBox genannt, die für das Haupttextfeld für die App verwendet wird. SelectLine() wird verwendet, um die aktuelle Zeile auszuwählen, die der Benutzer für eine Kopierschaltfläche bearbeitet, die ich hinzugefügt habe und für die ich eine spätere Implementierung habe. Wenn ich das Projekt erstelle, kann ich die notesTextBox nicht frei eingeben. Wenn ich das Projekt auf die gleiche Weise erstelle, aber das Windows.System.Forms.TextBox-Objekt benutze, kann ich frei in das Textfeld tippen. Strg + C, V und X funktionieren alle in ITextBox, aber dieses Verhalten wird vom übergeordneten Objekt geerbt. Ich fühle mich wie ich einen einfachen Fehler mache, aber Anyu Hilfe wäre großartig. Bitte lassen Sie mich wissen, zusätzliche Informationen über das Projekt muss ich hinzufügen

Antwort

0

Fügen Sie default: return false; zu Ihrem Schalter. Dein aktueller Code isst alle Tasten.

+0

ja, einfacher Fehler. Vielen Dank, es funktioniert – Sudo

Verwandte Themen