我正在用C#编写一个简单的记事本程序,在我的主要表单中我有一个文本框,它经历了一些奇怪的事情,我在编辑菜单中有一个删除on_click我有一个事件
txtContent.text = "";
还试过
txtContent.Text = string.Empty;
和
txtContent.Clear();
但是每次操作之后我的Caret都会消失,我认为这可能是一个焦点问题,但我也没有尝试过。无意中我最小化了我的记事本而不是再次打开它Cursor回来了,它在DELETE操作后没有消失我在网上搜索了这个问题但找不到任何希望你有一些建议
这是我的完整代码,这可能会使问题更清晰
private void deleteToolStripMenuItem_Click(object sender, EventArgs e)
{
textBox1.Clear();
time.Interval = 20000;
time.Enabled = true;
time.Start();
time.Tick+=focus;
}
void focus(object sender, EventArgs e)
{
textbox1.Focus();
}
答案 0 :(得分:6)
这是因为当用户选择菜单项时,菜单现在具有焦点,因此没有必要在文本框中显示光标。
如果要显示光标,则需要在菜单操作完成后将焦点设置回文本框。
例如(使用按钮):
private void button1_Click(object sender, EventArgs e)
{
textBox1.Clear();
textBox1.Focus();
}
但请注意,根据菜单的行为,这可能会有点棘手。如果焦点没有返回到文本框,您可能需要添加一个计时器来设置焦点,以便菜单可以完成它正在做的任何事情,而不是“重新窃取”焦点。
答案 1 :(得分:0)
您是否尝试过使用Form.invalidate()或其他同时刷新表单的方法?您还可以将焦点返回到文本框。
如果这些不起作用,可以编写反复刷新文本框的BackgroundWorker。