Systems.Windows.Forms.TextBox的子类不允许我编辑文本

时间:2017-10-06 00:23:42

标签: c# visual-studio inheritance textbox

在Visual Studio 2017中,我创建了一个类,用于在项目的相同名称空间下的自己的文件中继承System.Windows.Forms.TextBox。我只重写一个方法ProcessCmdKey(),以便我可以使用ctrl +键盘快捷键来选择创建的文本框中的所有文本。由于某种原因,多行文本框仅允许ctrl +快捷方式无论出于何种原因。当我构建应用程序并运行它时,我无法在我的子文本框中输入任何内容。这是班级:

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

在Form1.Designer类中,我创建了一个名为notesTextBox的ITextBox对象(字段),该对象用于应用程序的主文本框。 SelectLine()用于选择用户正在为我添加的复制按钮编辑的当前行,并具有以后的实现。当我构建项目时,我无法在notesTextBox中自由键入。如果我以相同的方式构建项目,但使用Windows.System.Forms.TextBox对象,我可以在文本框中自由键入。 Ctrl + C,V和X都在ITextBox中工作,但该行为继承自父级。我觉得我犯了一个简单的错误,但任何帮助都会很棒。请告诉我有关我需要包含的项目的其他信息

1 个答案:

答案 0 :(得分:0)

default: return false;添加到您的交换机。您当前的代码会占用所有按键。