2009-11-02 29 views
8

Lớp Application trong System.Windows.Forms có một số thuộc tính có thể khá hữu ích. Ví dụ:C#: Tại sao ứng dụng trong System.Windows.Forms?

  • ProductName
  • ProductVersion
  • CompanyName
  • ExecutablePath
  • StartupPath
  • CommonAppDataPath
  • CommonAppDataRegistry
  • UserAppDataPath
  • UserAp pDataRegistry
  • LocalUserAppDataPath

Tại sao những ở trong một lớp học trong System.Windows.Forms? Nếu tôi muốn truy cập vào CommonAppDataPath trong ứng dụng bảng điều khiển thì sao? Tôi có phải tham chiếu System.Windows.Forms.dll sau đó hoặc có sự thay thế cho các ứng dụng giao diện điều khiển không?

Trả lời

1

Trích dẫn từ MSDN tài liệu System.Windows.Forms namespace:

Không gian tên System.Windows.Forms chứa các lớp để tạo các ứng dụng dựa trên Windows mà tận dụng tối đa các tính năng giao diện người dùng phong phú có sẵn trong hệ điều hành Microsoft Windows.

Lý do thực sự duy nhất tôi có thể thấy lớp Ứng dụng được đặt trong không gian tên System.Windows.Forms là vì nó xử lý các thư Windows thường được đăng bởi các điều khiển biểu mẫu.

+1

Vâng, đó là sự thật. Tôi đoán ai đó ở Microsoft đã sai lầm về nguyên tắc trách nhiệm duy nhất hoặc một cái gì đó sau đó ...: p – Svish

+0

Sẽ không phải là lần đầu tiên! : P – James

9

Đối với các đường dẫn, bạn cũng có thể ghé qua lớp Environment trong .NET:

Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) 

và có một loạt toàn bộ các thư mục "đặc biệt" bạn có thể yêu cầu.

Tên công ty và các tùy chọn khác được kéo từ "AssemblyInfo.cs" trong thư mục "Thuộc tính" của bạn theo mặc định - nếu bạn có tệp như vậy, bạn cũng có thể truy cập các tệp đó trong mã.

Hm, với những con đường bạn phải thêm tên công ty và sản phẩm tên và như vậy mình mặc dù ...

Vâng, đó là những gì mà lắp ráp System.Windows.Forms đang làm cho bạn. Nếu bạn không có ứng dụng Winforms, bạn sẽ phải tự làm điều đó, đó là sự thật.

Marc

+0

+1, âm thanh tốt với tôi và tất cả các nội dung hữu ích đều có sẵn trong bất kỳ ứng dụng .net nào, không giới hạn đối với winforms –

+0

Hm, với những đường dẫn đó, bạn phải gắn tên công ty và tên sản phẩm. – Svish

+0

@Svish: Tôi không hiểu ý bạn là gì - đó chỉ là những "thư mục đặc biệt" mặc định mà Windows lưu giữ trong nội bộ - thư mục AppData của người dùng hoặc những thứ tương tự. –

0

Lớp ứng dụng khởi chạy vòng lặp tin nhắn win32 liên quan chặt chẽ đến biểu mẫu cửa sổ.

0

Bạn có thể nhận thông tin bạn đang tìm kiếm bằng cách sử dụng không gian tên Assembly

+0

Bạn có ví dụ không? – Svish

2

Thông tin như "ProductName" xuất phát từ hội đồng chính trong ứng dụng WinForms. Không có assembly "main" trong một ứng dụng ASP.NET.

Nếu bạn đang chạy trong tài khoản dịch vụ không có hồ sơ (thường có thể là trường hợp cho ứng dụng ASP.NET), sẽ không có UserAppDataPath - trong thực tế cố gắng dereference tài sản UserAppDataPath sẽ ném một ngoại lệ.

Vì những lý do này, sẽ không có ý nghĩa khi hiển thị thông tin này cho ứng dụng ASP.NET.

+0

Điểm tốt. Không nghĩ về khía cạnh ASP.NET của mọi thứ :) – Svish

Các vấn đề liên quan