none
OnPaint跟事件的問題 RRS feed

  • 問題

  • private/public override void OnPaint(object painteventarg e)這方法要怎麼使用
    我看一些書
    她好像都沒有去呼叫他就會自己出現了(假如我裡面有讓她畫一些東西)
    但我自己寫~都沒出現(我確定我寫的要繪畫的部份是正確的)

    不知道要怎麼去使用它~想問問看有沒有有用過的人可以幫我解決疑惑

    還有關於一些function有傳遞一些參數的問題
    有的是EventArgs  PaintEventArgs
    那這些我要傳什麼勒
    如果我是要普通使用
    而不是使用特殊事件~把它當普通function使用的話

    還有一個問題
    就是如果我有個Form1的程式~裡面有個picturebox1
    然後我再另一個檔案寫了個class~我可以在那個class對form1的picturebox1做控制嗎
    我不知道要怎麼處理


    thanks

     

    2007年12月17日 上午 11:18

解答

  • 程式碼區塊
    private/public override void OnPaint(object painteventarg e)這方法要怎麼使用
    我看一些書
    她好像都沒有去呼叫他就會自己出現了(假如我裡面有讓她畫一些東西)
    但我自己寫~都沒出現(我確定我寫的要繪畫的部份是正確的)

    不知道要怎麼去使用它~想問問看有沒有有用過的人可以幫我解決疑惑

     

     

    沒使用是因為系統自己會呼叫。

    每個控制項都有 Paint 事件,它是繼承自 Control 類別的,用來呈現控制項。

     

    因為你沒綁 Paint 事件常式,所以不會呼叫你的啊。

    至少要有下列的設定:

     

    程式碼區塊
    myForm.Paint += new System.Windows.Forms.PaintEventHandler(this.OnPaint);

     

     

     

    程式碼區塊
    還有關於一些function有傳遞一些參數的問題
    有的是EventArgs  PaintEventArgs
    那這些我要傳什麼勒
    如果我是要普通使用
    而不是使用特殊事件~把它當普通function使用的話

     

     

    可以只用簡單的物件,例如:

     

    程式碼區塊

    PaintEventArgs e = new PaintEventArgs();

    this.OnPaint(myForm, e);

     

    或是

    程式碼區塊

     

    PaintEventArgs e = new PaintEventArgs();

    this.OnPaint(null, e);

     

     

    程式碼區塊
    還有一個問題
    就是如果我有個Form1的程式~裡面有個picturebox1
    然後我再另一個檔案寫了個class~我可以在那個class對form1的picturebox1做控制嗎
    我不知道要怎麼處理

     

     

    沒事不要這樣做比較好,依照 MVC 的設計方式,使用者介面有的控制項就直接在使用者介面的程式中處理掉就好了,不要拉到其他類別去做。

     

    2007年12月17日 上午 11:40
    版主