【问题标题】:Issue with clearing multiline textbox in WinForms application在 WinForms 应用程序中清除多行文本框的问题
【发布时间】:2012-02-06 13:14:52
【问题描述】:

我的应用中有一个多行文本框,我想清除其文本。

问题是当我使用清除文本时

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 是包含文本框的用户控件

【问题讨论】:

  • 您能提供您的代码吗?
  • 您在问题中给出的事情在我的情况下并没有发生在自定义用户文本框中。它使用 textBox.Clear() 命令成功清除数据。
  • @ThitLwinOo:我已经从我的代码中添加了一个 sn-p 到帖子中。感谢您的帮助。
  • 这是由于用户控件的 DoubleBuffered 属性设置为 false 造成的。将其设置为 True 后,文本框正在正确呈现。
  • @SzilardD 我已经尝试过 textbox.Clear() 方法,它在这里工作正常。是否有其他与文本框控件相关的事件或代码?

标签: winforms textbox


【解决方案1】:

正如我所怀疑的,这是由于重绘问题造成的。这是因为用户控件的 DoubleBuffered 属性设置为 false。

将其设置为true后,文本框正在正确呈现。

【讨论】:

    【解决方案2】:

    我在使用多行文本框时遇到了类似的问题,我只是在MyTextBox.Clear() 之后执行了MyTextBox.Refresh()

    【讨论】:

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