【问题标题】:Caret disappears in a textbox插入符号消失在文本框中
【发布时间】:2013-01-07 17:23:47
【问题描述】:

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

 txtContent.text = "";

也试过了

 txtContent.Text = string.Empty;

 txtContent.Clear();

但每次手术后我的插入符号消失,我认为这可能是焦点问题,但我也没有尝试过。不小心我把记事本最小化了,然后又打开了 光标回来了,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();
}

【问题讨论】:

  • 您的意思可能是“插入符号”,而不是鼠标光标。编辑控件中显示插入点的竖线。是的,当文本框失去焦点时它会消失。没有人能用您发布的代码猜出原因。

标签: c# textbox


【解决方案1】:

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

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

例如(使用按钮):

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

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

【讨论】:

  • 我已经完全按照您的建议修改了我的代码,但什么也没发生仍然没有结果,也许还有其他解决方案?
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-08
    • 1970-01-01
    • 2012-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多