2009-04-10 48 views
3

如果我重寫OnPaint並在控件上畫一個正方形,我該如何得到e.graphics.draw ...以便在設計器中預覽它時顯示出來?覆蓋OnPaint

+0

你問如何繪製一個自定義繪製控件焦點矩形,或如何看到被覆蓋的OnPaint中的結果看一個控件的設計時? – 2009-04-10 20:16:10

回答

6

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

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

雖然你可以手動 Control.OnPaint註冊加入您的設計 時間UI,你會發現,覆蓋 OnPaintAdornments是一個更好的選擇 ,因爲它是隻有在調用 控件的設計時/運行時UI後纔會調用 畫出來,讓你把 錦上添花(見圖20)。只需添加 到DesignerAttribute的 ClockControl類完成 協會:複製代碼

[ 設計師(typeof運算(ClockControlDesigner)) ]類ClockControl:控制{...}

+0

包含段落描述是很好的,因爲這些鏈接已經死了。 – LarsTech 2016-02-09 20:21:00

1

如果你試圖繪製一個焦點矩形爲你控制,並且當它被添加到表單後操作你的控件時它是可見的,那麼Gaijin42's approach應該工作。

如果你想看到您的自定義繪製控件的樣子......

  • 如果你已經重寫了OnPaint方法在控制,你應該看到OnPaint的結果,當你在將其添加到表單(或其他控件)之後查看您的控件。

  • 如果你想看到Paint的結果看設計師爲控件本身時,I don't think that is possible(至少它不符合VS2005):

    不幸的是這是不可能的。 在編寫用戶控件的行爲 時,代碼不是 已編譯,而設計器實際上是 使用普通用戶控件來託管 子控件。 OnPaint 覆蓋等不會運行。

    要調試控件 中的覆蓋,您需要在某種 主機中運行它。 VS2005提供了一個新的控制 主機爲此目的,但我發現,即使這是不夠的有時。