簡體   English   中英

覆蓋OnPaint

[英]Override OnPaint

如果我重寫OnPaint並在控件上繪制一個正方形,當我在設計器中預覽它時,如何顯示e.graphics.draw ...?

http://msdn.microsoft.com/zh-CN/magazine/cc164048.aspx

http://msdn.microsoft.com/en-us/magazine/cc164145.aspx

雖然您可以手動向Control.OnPaint注冊以添加設計時用戶界面,但您會發現覆蓋OnPaintAdornments是一個更好的選擇,因為僅在繪制控件的設計時/運行時用戶界面后才調用該方法,錦上添花(見圖20)。 只需將DesignerAttribute添加到ClockControl類即可完成關聯:復制代碼

[Designer(typeof(ClockControlDesigner))類ClockControl:控件{...}

如果您想為控件繪制一個焦點矩形,並且在將控件添加到表單后對其進行處理時可以看到它,那么Gaijin42的方法應該可以使用。

如果您嘗試查看自定義繪制控件的外觀...

  • 如果你已經被覆蓋的的OnPaint的控制方法中,你應該看到的結果OnPaint ,當你在你的控制,已添加到窗體(或其他控件)之后。

  • 如果您在查看控件本身的設計器時嘗試查看Paint的結果, 我認為這是不可能的 (至少在VS2005中不是):

    不幸的是,這是不可能的。 在編寫用戶控件的行為時,不會編譯代碼,而設計人員實際上使用普通的用戶控件來承載子控件。 OnPaint覆蓋等將不會運行。

    要在控件中調試替代,您需要在某種主機中運行它。 VS2005為此提供了一個新的控制主機,但我發現有時這還不夠。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM