我有一个 ListBox,它有一个 DrawItem 事件,定义如下。ListBox 的以下属性设置为 - DrawMode = OwnerDrawFixed 和 FormattingEnabled = ture。
当我运行程序并将多个项目或对象添加到 ListBox 时,它会闪烁非常糟糕。我不确定到底是什么问题。我在其他 winform 上的设置非常相似的 ListBoxes 不会闪烁。我尝试使用闪烁的 ListBox 捕获 Winform 的图像,但捕获的图像并未显示 ListBox 每次都闪烁。
method HTrendFrm.AGroupList_DrawItem(sender: System.Object; e: System.Windows.Forms.DrawItemEventArgs);
var
lb:ListBox;
tg:TTrendGroup;
begin
if e.Index = -1 then exit;
lb := (sender as ListBox);
tg := TTrendGroup(LoggingGroup.Item[e.Index]);
if tg.Enabled then
begin
if ((e.State and DrawItemState.Selected) = DrawItemState.Selected) then
begin
lb.ForeColor:=Color.White;
e.Graphics.FillRectangle(SystemBrushes.Highlight, e.Bounds);
end
else
lb.ForeColor := Color.Black;
end
else
lb.ForeColor := Color.LightGray;
lb.CreateGraphics.DrawString(tg.name,new Font('Arial',9,FontStyle.Bold),new SolidBrush(lb.ForeColor),e.Bounds.Left+5,e.Bounds.Top);
if ((e.State and DrawItemState.Focus) <> DrawItemState.Checked) then
e.DrawFocusRectangle();
end;
那么,是什么导致了我的 ListBox 闪烁?
提前致谢,