カスタムリストビューがあり、メッセージボックスを表示する 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 つの例の動作の違いに興味があります。