【问题标题】:Adding Text to a text box with KeyEventArgs. C#使用 KeyEventArgs 将文本添加到文本框。 C#
【发布时间】:2015-04-18 14:30:16
【问题描述】:

我的这部分代码似乎无法正常工作。这段代码的目标是每次用户按下“ENTER”时添加一个编号列表。这是我的意思的示例。

0)10100[用户按下ENTER键]

1)(光标在这里)

这是我的代码。 meowbox 是一个多行文本框。

protected override void OnKeyDown(KeyEventArgs e)
{

    if (e.KeyCode == Keys.Enter)
    {

        meowbox.Text += i + ")";
        ++i;
    }

    base.OnKeyDown(e);
}

【问题讨论】:

  • 试试 meowbox.Text += "\n" + i.ToString() + ")"; \n 在 i.ToString() 方法之前创建一个新行。
  • 不好,多余的一行是错字。出于某种原因,当我问这个问题时,它的格式不正确。真正的问题是 i+")" 不会出现在文本框中。
  • 您遇到了什么问题?当你按下回车时有什么事情发生吗?
  • 是的,问题是当我按下回车键时我什么都不会发生。
  • 您似乎不在文本框的 KeyDown 事件中(没有 object sender 参数)

标签: c# .net textbox keyeventargs


【解决方案1】:

看起来您可能没有将代码放入正确的方法中。一种简单的方法是转到表单设计器,选择文本框,转到“属性”窗口,单击闪电图标(用于方法),然后双击 KeyDown 方法。这将创建一个事件处理程序并将其连接到文本框。

您可能遇到的另一个问题(一旦正确连接)是文本框继续处理按键,即使您自己处理它也是如此。为了解决这个问题,您可以将SuppressKeyPress 设置为true

例如:

private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Enter)
    {
        textBox1.Text += Environment.NewLine + i++ + ") ";
        textBox1.SelectionStart = textBox1.Text.Length;
        e.SuppressKeyPress = true;
    }
}

【讨论】:

  • 什么也没发生。问题是当我按下回车键时,文本框中没有任何反应。这就是我遇到的问题
  • 确保将此方法连接到文本框的 KeyDown 事件
  • @FrancoPettigrosso 我添加了一段描述如何通过设计器连接事件。
【解决方案2】:

我明白了!感谢你们!我必须做的是meowbox.KeyDown += new KeyEventHandler。如果你想对我这么说,谢谢!

【讨论】:

    猜你喜欢
    • 2020-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-08
    相关资源
    最近更新 更多