0

カスタムリストビューがあり、メッセージボックスを表示する OnDrawSubItem 関数内で何かをデバッグしたかったのです。アイテムを再描画しようとすると、GUI がフリーズすることが予想されました。奇妙なことに、サブアイテム (MessageBox の後) をクリックすると、CPU が 100% 使用されます。誰かがこれが落ちたループを説明できますか?

class ListViewEx : ListView
{
    public ListViewEx()
    {
        this.SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.OptimizedDoubleBuffer | ControlStyles.ResizeRedraw, true);
    }
    protected override void OnDrawColumnHeader(DrawListViewColumnHeaderEventArgs e)
    {
        e.DrawDefault = true;
    }
    protected override void OnDrawSubItem(DrawListViewSubItemEventArgs e)
    {
        MessageBox.Show("test");
        e.DrawDefault = true;
    }
}

編集

ボタンのペイントイベントで同じことをすると、CPUが高くなりません(メッセージボックスが繰り返されるだけです)

    private void btnTest_Paint(object sender, PaintEventArgs e)
    {
        MessageBox.Show("test");
    }

ペイント イベント内に mbox を表示するのは正しくないことはわかっています。私の 2 つの例の動作の違いに興味があります。

4

1 に答える 1