如何使文本框自动捕获用户正在键入的内容?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使文本框自动捕获用户正在键入的内容?相关的知识,希望对你有一定的参考价值。

我正在创建一个登录表单,就像标题所说的那样,有没有办法让我的文本框(在这种情况下是用户名的文本框)捕获用户输入的内容?我想复制Facebook主页的功能。如果您没有登录,并且您进入FB并尝试输入,无论您输入的是什么,它都显示在标有“电子邮件或电话”的文本框中。另外,我是C#的新手。

编辑:我希望文本框捕获用户输入的文本,即使用户没有选择所述文本框。我的英语不是很好,所以我不知道如何恰当地说出我想说的话。抱歉。

编辑2(来自我的评论):我想再次为我的英语道歉。我要再试一次。例如,我打开了登录表单,然后它出现了。没有选择控制或焦点。现在,当用户键入内容时,我希望用户的文本框成为焦点,并且用户键入的内容也会在那里键入。

答案

所以这基本上是一个事件的意图。你应该使用你的TextChanged()TextBox事件。每次textBox1.Text属性的内容发生变化时,都会调用此事件。

private void textBox1_TextChanged(object sender, EventArgs e)
{
    targetTextBox.Text = textBox1.Text;
}

您可以将文本值存储在string属性中以供进一步全局使用。您可以使用string而不是简单的Dictionary<TKey,TValue>属性。作为密钥,您可以存储以string身份登录的特定用户,并且它的值可以是此特定用户编写的所有输入的List<string>


根据OP的新需求进行编辑:

所以首先你应该把焦点设置到你想要的textBox。如果我理解正确,您希望在加载登录表单后立即执行此操作。所以将它添加到登录表单的构造函数的末尾。

this.ActiveControl = textBox1; /* name of the textBox you want to set focus to*/

然后订阅TextChanged事件为textBox获得焦点,就是这样。这可以在properties窗口中以最简单的方式完成,一旦您查看表单的设计就会显示。


根据新提供的代码进行编辑:这是关于将焦点设置为textBox1,指的是OP的代码环境。

private void button1_Click(object sender, EventArgs e)
{
    Hide();

    Form2 form2 = new Form2();
    form2.ShowDialog();

    Show();

    //simply setting the focus here
    this.ActiveControl = textBox1;
}

或者你可以,例如订阅活动Form1_VisibleChanged()。然后你甚至不需要在构造函数中设置焦点,只是在这个事件中。

private void Form1_VisibleChanged(object sender, EventArgs e)
{
    this.ActiveControl = textBox1;
}

Form1的可见性发生变化时,每次都会触发此事件,因此即使在第一次初始化或每次调用Show()之后也是如此。

以上是关于如何使文本框自动捕获用户正在键入的内容?的主要内容,如果未能解决你的问题,请参考以下文章

如何设置MS-Access文本框以根据表值直接输入您正在键入的内容?

从文本字段捕获数据时如何忽略自动完成值?

访问表单:在文本框中捕获日期更改

如何使 actionscript 2 将代码解释为纯文本?

在捕获keydown事件时如何在文本框中允许退格

javascript:在用户键入或更改文本框值时忽略无效输入[重复]