当高度超过810时,以下情况会导致闪烁。
如何防止这种情况发生?
<h1>Menu page</h1>
<h2>Anchor example</h2>
<h3><a name="menu">Menu</a></h3>
<ul>
<li><a href="anchor_example2.html#a001">Jump to a001</a></li>
<li><a href="anchor_example2.html#a002">Jump to a002</a></li>
<li><a href="anchor_example2.html#a003">Jump to a003</a></li>
</ul>
答案 0 :(得分:2)
您将Height
设置为两次,而不是一次,导致Control重新绘制两次。
要防止该效果存储新高度的计算,然后只分配一次。
private void rtbScript_TextChanged(object sender,EventArgs e)
{
var numberOfLines = SendMessage(rtbScript.Handle.ToInt32(),EM_GETLINECOUNT,0,0);
var newHeight = (rtbScript.Font.Height + 2) * numberOfLines;
if(newHeight>810)
{
this.rtbScript.Height = 810;
}
else
{
this.rtbScript.Height = newHeight;
}
}
答案 1 :(得分:1)
试试这个:https://stackoverflow.com/a/3718648/5106041 它闪烁的原因是因为winforms默认不进行双缓冲,这是WPF创建的原因之一,它不仅解决了这些问题(我们得到了一些新问题),而且你将拥有更丰富的布局系统。