首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Systems.Windows.Forms.TextBox的子类不允许我编辑文本

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

Stack Overflow用户
提问于 2017-10-06 00:23:42
回答 1查看 82关注 0票数 0

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

代码语言:javascript
复制
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类中,我正在创建一个名为ITextBox的对象(字段),名为notesTextBox,用于应用程序的主文本框。SelectLine()用于选择用户正在编辑的当前行,用于我添加的复制按钮,并有稍后的实现。当我构建项目时,我无法自由地输入notesTextBox。如果以相同的方式构建项目,但使用Windows.System.Forms.TextBox对象,则可以自由地键入文本框。Ctrl+C、V和X都在ITextBox中工作,但这种行为是从父继承的。我觉得我犯了一个简单的错误,但是安宇的帮助会很好。请告诉我任何关于我需要包括的项目的其他信息。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-06 00:26:39

default: return false;添加到您的交换机。你现在的代码会吃掉所有的按键。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46596587

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档