清除WinForms应用程序中的多行文本框时出现问题
我的应用程序中有一个多行文本框,我想清除它的文本 问题是,当我使用清除WinForms应用程序中的多行文本框时出现问题,winforms,textbox,Winforms,Textbox,我的应用程序中有一个多行文本框,我想清除它的文本 问题是,当我使用 textBox.Text = "" or textBox.Clear() 只有第一行被清除。其他行仍然存在,但无法删除,如果我开始在文本框中键入,其他行将被覆盖,这使我认为这是一个重新绘制的问题,但不明白为什么会发生这种情况 文本框位于表单内的自定义用户控件中,可以最小化。该问题在窗体最小化然后恢复后出现 我尝试在控件和文本框上调用Refresh,以触发重新绘制,但没有成功 是否有其他方法触发重新绘制事件来解决此问题?不知
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
的一种方法)中,我清除了文本框中的文本:
public void PopulateForm()
{
this.myControl.myTextBox.Clear();
}
this.myControl
是包含文本框的用户控件正如我所怀疑的,这是由于重新绘制问题造成的。这是由于用户控件的DoubleBuffered
属性设置为false引起的
将其设置为true后,文本框将正确呈现。我对具有多行的文本框有类似的问题,我只是在
MyTextBox.Clear()之后执行了MyTextBox.Refresh()
你能提供你的代码吗?你在问题中给出的东西在我的自定义用户文本框中不会发生。它使用textBox.Clear()命令成功地清除了数据。@ThitLwinOo:我已经在文章中添加了一段代码片段。感谢您的帮助。这是由于用户控件的DoubleBuffered
属性设置为false造成的。将其设置为True后,文本框被正确呈现。@SzilardD我已经尝试了textbox.Clear()方法,它在这里工作正常。是否有任何其他事件或代码与textbox控件相关?