我的应用中有一个多行TextBox,我想要清除它的文字。
问题在于,当我使用
清除文本时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
是包含文本框的用户控件
答案 0 :(得分:0)
正如我所怀疑的,这是由于一个重复的问题。它是由用户控件的DoubleBuffered
属性设置为false引起的。
将其设置为true后,正在正确呈现文本框。
答案 1 :(得分:0)
我在使用多行文本框时遇到了类似的问题,我只是在 select ssc.id
,mgz.Title
,tli.id
,tli.Time
from Subscription ssc
join Person prs
on ssc.PersonID = prs.id
and prs.id = 3
join Magazine mgz
on mgz.id = ssc.MagazineID
and mgz.from <= date.today()
and mgz.until > date.today()
left join TimeLogedIn tli
on tli.SubscriptionID = ssc.id
and tli.DateOnline = date.today()
之后做了一个 class Magazine(models.Model):
Title = models.CharField(max_length=100L)
from = models.Datefield()
until = models.Datefield()
Persons = models.ManyToManyField(Person, through='Subscription')
class Person(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
Magazines = models.ManyToManyField(Magazine, through='Subscription')
class Subscription(models.Model):
MagazineID = models.ForeignKey(Magazine,on_delete=models.CASCADE)
PersonID = models.ForeignKey(Person,on_delete=models.CASCADE)
class TimeLogedIn(models.Model):
SubscriptionID = models.ForeignKey('Subscription', on_delete=models.CASCADE)
DateOnline = models.DateField()
Time = models.DecimalField(max_digits=5, decimal_places=2)
。