第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如果加載一次圖片失敗,為什么不再調(diào)用 OnPaint?

如果加載一次圖片失敗,為什么不再調(diào)用 OnPaint?

C#
茅侃侃 2021-11-28 16:37:22
我發(fā)現(xiàn)了一些我沒有真正得到的東西:protected override void OnPaint(PaintEventArgs e){    DrawChar(e.Graphics);    base.OnPaint(e);}void DrawChar(Graphics g){    if (body != null)    {        g.DrawImage(body, X, Y);    }}假設“主體”是空的 - 如果我刪除 DrawChar 中的條件,程序將永遠不會繪制任何內(nèi)容,并且我發(fā)現(xiàn) onPaint 甚至不再升高(例如,在調(diào)整大小或最小化和恢復窗口時)。編輯:關鍵是 - 如果 DrawImage 失敗(您從調(diào)試器中不知道,它只是不繪制圖像,例如當 Image 為空時),應用程序中的 OnPaint 事件將停止引發(fā)。
查看完整描述

1 回答

?
RISEBY

TA貢獻1856條經(jīng)驗 獲得超5個贊

好像失敗的 DrawImage 導致了一些錯誤狀態(tài)


是的,這正是它的作用。Paint 事件處理程序中的異常非常尷尬,它使繼續(xù)調(diào)試程序變得困難。如果什么都不做,當你繼續(xù)調(diào)試時,這樣的異常會一遍又一遍地引發(fā),使得診斷程序中的另一個異常變得非常困難。這種擔憂已經(jīng)過時,可以追溯到 Aero 尚不存在的 Win2000/XP 時代。


執(zhí)行此操作的方法是調(diào)用 OnPaint() 的方法,它是一個名為Control.PaintWithErrorHandling()的內(nèi)部方法??匆豢矗_假設的錯誤狀態(tài)名為 STATE_EXCEPTIONWHILEPAINTING。當它被設置一次時,它總是回退到 PaintException(),它繪制了失敗的紅十字。從而避免再次引發(fā)異常的風險。我將復制/粘貼評論:


    // Exceptions during painting are nasty, because paint events happen so often.

    // So if user painting code ----s up, we make sure never to call it again,

    // so as not to spam the end-user with exception dialogs.

破折號用于拼寫 f-word,在開源之前清理源代碼花了很長時間,并在他們嘗試自動化時造成了相當大的損害:)


查看完整回答
反對 回復 2021-11-28
  • 1 回答
  • 0 關注
  • 277 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號