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

时间:2018-02-28 08:45:14

标签: c# textbox

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

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

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

1 个答案:

答案 0 :(得分:0)

所以这基本上是一个事件的意图。您应该使用TextChanged()的{​​{1}}事件。每次属性TextBox的内容发生更改时,都会调用此事件。

textBox1.Text

您可以将文本值存储在private void textBox1_TextChanged(object sender, EventArgs e) { targetTextBox.Text = textBox1.Text; } 属性中以供进一步全局使用。您也可以使用string,而不是普通的string属性。作为 key ,您可以将以Dictionary<TKey,TValue>登录的特定用户存储为,这可能是此特定用户拥有的所有输入中的string写入。

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

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

textBox

然后订阅获得焦点的this.ActiveControl = textBox1; /* name of the textBox you want to set focus to*/ 的{​​{1}}事件,就是这样。这可以在TextChanged窗口中以最简单的方式完成,一旦您查看表单的设计就会显示。

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

properties

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

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; } 之后也是如此。