2013-04-07 7 views
5

Xin chào Tôi có một số biểu mẫu trong dự án của mình và tôi muốn thực hiện một phương thức đã đóng một trong các hình thức đó. Phương pháp này là:Đóng biểu mẫu cụ thể bằng cách sử dụng phương thức trong C#

public static void close_form (Form frm) 
{ 
    frm.Close(); 
} 

Và tôi sử dụng nó theo cách này:

public partial class myForm : Form 
{ 
    close_form(myForm); 
} 

nhưng khi tôi muốn chạy các ứng dụng tôi nhận được lỗi: myForm là một 'loại' nhưng được sử dụng như một 'biến'

Tôi đang làm gì sai? Có cách nào khác để close biểu mẫu mà không sử dụng this.close() không?

+0

Tại sao bạn tránh gọi phương thức 'Đóng' trực tiếp? –

Trả lời

8

Bạn đang đi qua loại hình thức tức là myForm bạn cần phải vượt qua đối tượng kiểu, bạn có thể vượt qua this

public partial class myForm : Form 
{ 
    close_form(this); 
} 

Đây myForm là loại mới được thừa kế từ Form loại và không phải là thể hiện của hình thức hiện tại của bạn . Từ khóa this đại diện cho phiên bản hiện tại của lớp bạn có thể chuyển đến số close_form bạn có thể đọc thêm về điều này here.

Có một số lý do để đóng biểu mẫu thông qua chức năng như ghi nhật ký một số thông tin giống như đóng tên và thời gian biểu mẫu, vv Bạn chỉ cần gọi this.Close thay vì gọi số close_form và chuyển biểu mẫu hiện tại cho nó.

+0

Tất nhiên, hoàn toàn không rõ lý do tại sao điều này vượt trội hơn 'this.Close()'. –

+0

Bạn rõ ràng không có lý do để đóng biểu mẫu theo cách đó thay vì sử dụng this.Close nhưng IMO close_form là một phương thức tĩnh và có thể được gọi từ các lớp/biểu mẫu khác và có thể thực hiện một số quy trình phổ biến như ghi nhật ký. – Adil