我正在创建一个登录表单,就像标题所说的那样,有没有办法让我的文本框(在这种情况下是用户名的文本框)捕获用户输入的内容?我想复制Facebook主页的功能。如果您没有登录,并且您转到FB,并尝试输入,无论您键入什么,它都显示在标有"电子邮件或电话的文本框中。"另外,我是C#的新手。
编辑:我希望文本框能够捕获用户输入的文本,即使用户没有选择所述文本框也是如此。我的英语不是很好,所以我不知道如何恰当地说出我想说的话。遗憾。
编辑2(来自我的评论):我想再次为我的英语道歉。我要再试一次。例如,我打开了登录表单,然后它出现了。没有选择控制或焦点。现在,当用户键入内容时,我希望用户的文本框成为焦点,并且用户键入的内容也会在那里键入。
答案 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;
}
之后也是如此。