2012-02-06 35 views
1

我的应用程序中有一个多行文本框,其文本要清除。在WinForms应用程序中清除多行文本框的问题

的问题是,当我使用清除

textBox.Text = "" 
or 
textBox.Clear() 

文本只有第一行被清除。其他行仍然存在,但无法删除,如果我开始在文本框中输入,其他行将被覆盖,这导致我认为这是一个重新绘制问题,但无法弄清楚为什么会发生这种情况。

该文本框位于可以最小化的窗体内的自定义用户控件中。问题出现在窗体最小化然后恢复之后。

我试图在控件上和文本框上调用Refresh来触发重绘,但它不起作用。

是否有另一种方法触发重绘事件来解决这个问题?不知道我在这里做错了什么。

编辑:

这是一个代码示例。调用ShowForm方法来恢复最小化的表单。

public static void ShowForm() 
    { 
     if (!myForm.Visible) 
     { 
      myForm.PopulateForm(); 
      myForm.Show(); 
      myForm.Activate(); 
      myForm.WindowState = FormWindowState.Normal; 
     } 
    } 

和内部PopulateForm(这是myForm的方法),I清除文本框的文本:

public void PopulateForm() 
    { 
     this.myControl.myTextBox.Clear(); 
    } 

this.myControl是包含文本框

+0

你能提供你的代码吗? – 2012-02-06 13:18:51

+0

在我的情况下,您在自己的问题中提供的内容不会发生在自定义用户文本框中。它使用textBox.Clear()命令成功清除数据。 – 2012-02-06 13:24:44

+0

@ThitLwinOo:我在代码中添加了一段代码。谢谢你的帮助。 – SzilardD 2012-02-06 13:29:37

回答

0

正如我怀疑用户控制,这是由于重绘问题。这是由用户控件的DoubleBuffered属性设置为false引起的。

设置为true后,文本框被正确渲染。

相关问题