0

ListBox があり、次のように定義された DrawItem イベントがあります。ListBox の次のプロパティは、DrawMode = OwnerDrawFixed および FormattingEnabled = ture として設定されます。

プログラムを実行して ListBox に複数のアイテムまたはオブジェクトを追加すると、ちらつきがひどくなります。何が問題なのか正確にはわかりません。他のwinformで非常によく似た設定のListBoxがありますが、ちらつきません。ちらつきのある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 のちらつきの原因は何ですか?

前もって感謝します、

4

1 に答える 1

1

LarsTech の提案に従いましたが、期待どおりに動作します。

lb listbox を完全に削除し、e.Graphics に置き換えました。これで、ちらつきはなくなりました。

于 2012-04-25T13:58:40.623 に答える