ในกรณีที่ form มี control เยอะๆ (หรือ form ทีรูปเป็น background หรือมี TabControl ใน form) การเปิด form หรือ สลับ form ไปมา อาจจะทำให้เกิดการกระพริบของ control ต่างๆ ได้ ถึงแม้จะให้ Double Buffer เป็น true แล้วก็ตาม นี่คือโค้ด การ override property ของ form ที่ชื่อว่า CreateParams
ปกติแล้วเวลา form (หรือ control อื่นๆ) ทำการ update ตัวเอง (Paint) มันจะวาดทับพื้นที่ทั้งหมดของตัวเอง แล้ว วาด control ที่อยู่ในตัวมันใหม่อีกที ทำให้หากมี control เยอะๆ จะเกิดการกระพริบในการวาด
ตัวเลข style ที่เป็นเลข &H2000000 ก็คือ style ที่ชื่อว่า WS_CLIPCONTROLS เป็นการบอกว่า ให้วาดเฉพาะส่วนที่ไม่มี control อื่นๆ อยู่เท่านั้น จึงทำให้การวาด (paint) เร็วขึ้น
Protected Overrides ReadOnly Property CreateParams() As _
System.Windows.Forms.CreateParams
Get
Dim cp As CreateParams = MyBase.CreateParams
Dim OSVer As Version = _
System.Environment.OSVersion.Version()
Select Case OSVer.Major
Case 5
If OSVer.Minor > 0 Then
cp.ExStyle = cp.ExStyle Or &H2000000
End If
Case Is > 5
cp.ExStyle = cp.ExStyle Or &H2000000
End Select
Return cp
End Get
End Property
สาเหตุที่ต้องตรวจสอบ version ของ windows เนื่องจากใน Windows ที่ต่ำกว่า XP จะทำให้ form แบบ MDI กิน cpu มาก จนทำให้โปรแกรมแฮงก์ได้
โพสต์แนะนำ
วันศุกร์ที่ 13 กรกฎาคม พ.ศ. 2555
วันอังคารที่ 10 กรกฎาคม พ.ศ. 2555
Bye bye Thunder Bird
Mozilla plans to let go of its open-source e-mail software, with hopes that other people will keep Thunderbird alive, TechCrunch says.
Read more: download.cnet.com
Read more: download.cnet.com
สมัครสมาชิก:
ความคิดเห็น (Atom)