2013-01-07 34 views
3

我在C#中,在我的主要形式做一个简单的记事本程序我有遇到一些奇怪的事情一个文本框消失了,我在我的编辑菜单中删除on_click我有一个事件插入符号的文本框

txtContent.text = ""; 

也试过

txtContent.Text = string.Empty; 
该操作我插入符d后

而且

txtContent.Clear(); 

但每次出现了,我认为这可能是一个焦点问题,但它不是我也试过。意外地我最小化了我的记事本,并再次打开它光标回来了,它不会消失DELETE操作后我搜索网络的这个问题,但找不到任何东西,你有一些建议

这是我完整的代码,这可能会带来一些更加清晰使用Form.invalidate()或其他方法问题

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

你可能是指“脱字号”,而不是鼠标光标。显示插入点的编辑控件中的垂直条。是的,当文本框失去焦点时它会消失。没有人可以猜出为什么你发布的代码。 –

回答

6

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

如果您想要显示光标,则需要在菜单操作完成后将焦点置回文本框。

例如(使用按钮):

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

但是,请注意,这可能取决于菜单的行为变得有点棘手。如果焦点没有返回到文本框,您可能需要添加一个定时器来设置焦点,以便菜单可以完成正在进行的任何操作,而不是“重新窃取”焦点。

+0

我完全按照您的建议修改了我的代码,但没有发生任何事情仍然没有结果,也许还有其他解决方案? –

0

您是否尝试过也刷新形式?您也可以将焦点返回到文本框。

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