2

我正在用 C# 制作一个简单的记事本程序,在我的主窗体中,我有一个文本框,它经历了一些奇怪的事情,我的编辑菜单中有一个 DELETE on_click 我有一个事件

 txtContent.text = "";

也试过

 txtContent.Text = string.Empty;

 txtContent.Clear();

但每次手术后我的插入符号消失,我认为这可能是一个焦点问题,但我也没有尝试过。不小心我最小化了我的记事本,然后再次打开它光标回来了,删除操作后它并没有消失我在网上搜索了这个问题但找不到任何东西希望你有一些建议

这是我的完整代码,这可能会使问题更加清晰

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();
}
4

2 回答 2

6

这是因为当用户选择菜单项时,菜单现在具有焦点,因此在文本框中显示光标是没有意义的。

如果要显示光标,则需要在菜单操作完成后将焦点重新设置在文本框上。

例如(使用按钮):

    private void button1_Click(object sender, EventArgs e)
    {
        textBox1.Clear();
        textBox1.Focus();
    }

但是,请注意,根据菜单的行为,这可能会有些棘手。如果焦点没有返回到文本框,您可能需要添加一个计时器来设置焦点,以便菜单可以完成它正在做的任何事情,而不是“重新窃取”焦点。

于 2013-01-07T17:29:51.503 回答
0

您是否尝试过使用 Form.invalidate() 或其他刷新表单的方法?您还可以将焦点返回到文本框。

如果这些不起作用,则可以编写一个反复刷新文本框的 BackgroundWorker。

于 2013-01-07T17:27:14.927 回答