Từ 1 tới 8 trên tổng số 8 kết quả

Đề tài: Thắc mắc về phương thức Application.Run()

  1. #1
    Ngày gia nhập
    10 2010
    Bài viết
    4

    Unhappy Thắc mắc về phương thức Application.Run()

    Em mới bắt đầu học về C#.Net đọc đến vài ví dụ mở đầu trong sách thì không hiểu lắm về phương thức Application.Run .
    Ví dụ với đoạn code dưới

    Visual C# Code:
    1. using System;
    2. using System.Collections.Generic;
    3. using System.Linq;
    4. using System.Windows.Forms;
    5. using System.Threading;
    6. using System.Drawing;
    7.  
    8. namespace WindowsFormsApplication
    9. {
    10.     class SeparateMain
    11.     {
    12.         public static void Main()
    13.         {
    14.             Application.Run(new AnotherHelloWorld());
    15.         }
    16.     }
    17.  
    18.     class AnotherHelloWorld : Form
    19.     {
    20.         public AnotherHelloWorld()
    21.         {
    22.             Text = "Another Hello World";
    23.             BackColor = Color.White;
    24.         }
    25.  
    26.         protected override void OnPaint(PaintEventArgs pea)
    27.         {
    28.             Graphics gr = pea.Graphics;
    29.  
    30.             gr.DrawString("Hello! Windows Forms.", this.Font, Brushes.Black, 0, 0);
    31.         }
    32.     }
    33. }

    Hàm onpaint chưa hề được gọi nhưng tại sao đã được thực thi
    Vậy phương thức Application.Run hoạt động như thế nào ?
    Em đọc wa thì chỉ hiểu hàm này chạy như 1 vòng lặp khắp toàn code và khi đóng form lại thì nó trả về Main.
    ...Uhm...
    ... đang đi kiếm mục tiêu của bản thân...

  2. #2
    Ngày gia nhập
    04 2009
    Bài viết
    108

    Trong lớp Form có phương thức OnPaint nó được sử dụng để vẽ lên Form của bạn hoặc mỗi thời điểm Form cần vẽ lại. Trong trường hợp bạn override nó, thì nó sẽ sử dụng phương thức OnPaint do bạn định nghĩa.

    Còn Application.Run (bắt đầu thực thi 1 vòng lặp thông điệp ứng dụng chuẩn - MSDN). Khi bạn thực thi ứng dụng. Sẽ bắt đầu từ hàm Main, trong hàm Main sẽ thực thi câu lệnh Application.Run(new AnotherHelloWorld()), sau đó nó sẽ gọi tới hàm tạo AnotherHelloWord để khởi tạo đối tượng, trong này nó thực thi các sự kiện vẽ Form, vẽ các điều khiển trên Form, đăng ký các sự kiện CloseForm,... Sau khi tất cả các quá trình này hoàn tất thì kết quả mà bạn có là 1 Form mà bạn có thể thu nhỏ, phóng lớn,...
    Đã được chỉnh sửa lần cuối bởi Yin Yang : 31-07-2011 lúc 11:08 AM. Lý do: Ko nên quote bừa bãi
    Ai đã gieo vào lòng Ai nỗi nhớ
    Để vì Ai sóng vỗ những đêm dài
    Ai có biết vì Ai-Ai không ngủ
    Trằn trọc hoài nỗi nhớ của riêng Ai.

  3. #3
    Ngày gia nhập
    10 2010
    Bài viết
    4

    Vậy phương thức OnPaint sao ko cần gọi cũng có thể thực thi vậy bạn ?
    Giải thích dùm mình với :(
    ...Uhm...
    ... đang đi kiếm mục tiêu của bản thân...

  4. #4
    Ngày gia nhập
    09 2010
    Nơi ở
    Hà nội
    Bài viết
    210

    Trích dẫn Nguyên bản được gửi bởi trinhhuutam Xem bài viết
    Vậy phương thức OnPaint sao ko cần gọi cũng có thể thực thi vậy bạn ?
    Giải thích dùm mình với :(

    Code:
    override
    nó kế thừa lớp FORM bạn à
    thực chất ko cần gọi thì lớp FORM nó cũng tự chạy rồi , ban đầu hàm OnPaint là
    Code:
    protected override void OnPaint(PaintEventArgs pea){}
    ko có gì phải ko
    nhưng khi bạn viết
    Code:
    protected override void OnPaint(PaintEventArgs pea)
    để í từ khóa override nhé
    khi bạn gọi như vậy nghĩa là bạn muốn định nghĩa lại hàm OnPaint của lớp FORM
    chỉ vậy thôi
    Quá yêu em khiến em xem
    Đó như là sơ hở
    Em điểu khiển và biến tôi thành 1 thằng khở

  5. #5
    Ngày gia nhập
    03 2009
    Nơi ở
    Ở địa ngục
    Bài viết
    667

    Trích dẫn Nguyên bản được gửi bởi trinhhuutam Xem bài viết
    Vậy phương thức OnPaint sao ko cần gọi cũng có thể thực thi vậy bạn ?
    Giải thích dùm mình với :(
    Khi show form, bao giờ cũng phát sinh sự kiện Paint. để vẽ cửa sổ. Chính sự kiện này gọi onPaint

  6. #6
    Ngày gia nhập
    06 2009
    Nơi ở
    Cái hộp
    Bài viết
    1,255

    Mặc định Thắc mắc về phương thức Application.Run()

    Khi cửa sổ cần vẽ lại hệ thống sẽ gửi thông điệp WM_PAINT đến cửa sổ. Khi đó cửa sổ sẽ xử lý bằng cách gọi OnPaint().
    Men talk of killing time, while time quietly kills them.
    Time is what we want most, but what we use worst.
    ------------------------------
    YinYang's Programming Blog

  7. #7
    Ngày gia nhập
    10 2010
    Nơi ở
    Biên Hòa
    Bài viết
    562

    cho tớ ké tí. Có method nào hỗ trợ mình xác định máy hiện hành là win xp hay win 7 ko ??

  8. #8
    Ngày gia nhập
    02 2011
    Nơi ở
    Hồ Chí Minh
    Bài viết
    136

    Trích dẫn Nguyên bản được gửi bởi kenturo Xem bài viết
    cho tớ ké tí. Có method nào hỗ trợ mình xác định máy hiện hành là win xp hay win 7 ko ??
    Visual C# Code:
    1.             System.OperatingSystem os = Environment.OSVersion;
    2.             System.Version vs = os.Version;
    3.             if (vs.Major == 5 && vs.Minor == 1)
    4.                 Console.WriteLine("win xp");
    5.             if (vs.Major == 6 && vs.Minor == 1)
    6.                 Console.WriteLine("win 7");

Các đề tài tương tự

  1. Error:the application was unable to start correctly "0xc0150002".click ok to close the application
    Gửi bởi nightelf trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 1
    Bài viết cuối: 04-02-2013, 01:05 PM
  2. Kết nối ứng dụng C# và application của aspx như thế nào?
    Gửi bởi khanhduy.8hpm trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 2
    Bài viết cuối: 13-06-2012, 10:31 AM
  3. khác nhau giữa MFC application và win32 application
    Gửi bởi rain.nguyen trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 7
    Bài viết cuối: 22-03-2011, 10:15 PM
  4. Mở 1 application trong C# như thế nào?
    Gửi bởi duytuancdth10 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 12
    Bài viết cuối: 20-11-2010, 09:41 AM
  5. Làm thế nào giao tiếp giữa 2 application với VC++?
    Gửi bởi keancaptinh trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 3
    Bài viết cuối: 12-06-2009, 03:19 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn