我正在廉价的触摸屏PC上运行QWERTY风格的键盘(类似于银行ATM)。 Panel容器有几十个按钮,当用户按下“Shift”时,我会交换按钮上的所有文本。例如,btnPos12.Text =(m_bShiftOn)? “Q”:“q”;在面板上所有按钮的大循环中。
这样可以正常工作,但由于处理器功能不是很强大,因此所有按钮文本都会发生变化,因此会出现明显的闪烁现象。我想暂停所有文本更新,直到它们全部完成然后......砰!...改变它们(也就是双缓冲)。我尝试使用这个帖子: How do I suspend painting for a control and its children?
这适用于单个控件,例如多行TextBox,但不会阻止每个按钮的文本更新。
然后我尝试在一个按钮上更改文本。首先,我暂停了该按钮上的绘图,然后在一个大循环中更改了文本...但每次调用btnPosXX.Text = ...时文本都会更改。有没有办法阻止更改控件的“Text”属性?
int nShiftIndex = (m_bShiftOn) ? UPPER : LOWER;
for (int nButton = 0; nButton < pnlButtons.Controls.Count; nButton++)
{
pnlButtons.Controls[nButton].Text = m_aszKeys[nShiftIndex];
}
答案 0 :(得分:0)
this.SuspendLayout();
...
this.ResumeLayout();