Windows Forms

**Windows Forms** (WinForms) là thư viện lớp đồ họa (GUI) mã nguồn mở và miễn phí được bao gồm như một phần của Microsoft.NET Framework hoặc Mono Framework, cung cấp nền tảng để viết các ứng dụng khách phong phú cho máy tính để bàn, máy tính xách tay và máy tính bảng. Mặc dù nó được coi là sự thay thế cho Thư viện lớp nền tảng Microsoft Foundation của C ++ trước đây và phức tạp hơn, nhưng nó không cung cấp mô hình tương đương và chỉ hoạt động như một nền tảng cho tầng giao diện người dùng trong một giải pháp nhiều tầng.

Tại sự kiện Microsoft Connect vào ngày 4 tháng 12 năm 2018, Microsoft đã công bố phát hành Windows Forms dưới dạng một dự án mã nguồn mở trên GitHub. Nó được phát hành theo Giấy phép MIT. Với bản phát hành này, Windows Forms đã có sẵn cho các dự án nhắm mục tiêu đến khung.NET Core. Tuy nhiên, khung công tác vẫn chỉ có sẵn trên nền tảng Windows và việc triển khai Windows Forms chưa hoàn thiện của Mono vẫn là triển khai đa nền tảng duy nhất.

## Thành phần
Tất cả các yếu tố hình ảnh trong thư viện lớp Windows Forms xuất phát từ lớp Control. Điều này cung cấp chức năng tối thiểu của một yếu tố giao diện người dùng như vị trí, kích thước, màu sắc, phông chữ, văn bản, cũng như các sự kiện phổ biến như nhấp và kéo / thả. Lớp Control cũng có hỗ trợ lắp ghép để cho phép kiểm soát sắp xếp lại vị trí của nó dưới cha mẹ của nó. Hỗ trợ khả năng truy cập Microsoft Active trong lớp Control cũng giúp người dùng bị khiếm khuyết sử dụng Windows Forms tốt hơn.

Bên cạnh việc cung cấp quyền truy cập vào nút Windows Bản địa, TextBox, CheckBox và ListView, Windows Forms đã thêm các điều khiển của riêng nó để lưu trữ ActiveX, sắp xếp bố cục, xác thực và ràng buộc dữ liệu phong phú. Những điều khiển được hiển thị bằng GDI +.

## Lịch sử phát triển
Giống như Tóm tắt Window Toolkit (AWT), API Java tương đương, các biểu mẫu Windows là một cách sớm và dễ dàng để cung cấp các thành phần giao diện người dùng đồ họa cho.NET Framework. Các biểu mẫu Windows được xây dựng trên API Windows hiện có và một số điều khiển chỉ quấn các thành phần Windows bên dưới. Một số phương thức cho phép truy cập trực tiếp vào các cuộc gọi lại Win32, không khả dụng trong các nền tảng không phải Windows.

## Sự khác nhau giữa Winform và XAML
Để phát triển trong tương lai, Microsoft đã thành công Windows Forms với  GUI dựa trên XAML sử dụng các khuôn khổ như WPF và UWP. Tuy nhiên, kéo và thả vị trí của các thành phần GUI theo cách tương tự như Windows Forms vẫn được cung cấp trong XAML bằng cách thay thế phần tử XAML gốc của Trang / Cửa sổ bằng UI-Control "Canvas". Khi thực hiện thay đổi này, người dùng có thể tạo một cửa sổ theo kiểu tương tự như trong Windows Forms bằng cách kéo và thả trực tiếp các thành phần bằng Visual Studio GUI.

Trong khi XAML cung cấp khả năng tương thích ngược về vị trí kéo và thả thông qua Điều khiển Canvas, Điều khiển XAML chỉ tương tự như Điều khiển biểu mẫu Windows và không tương thích ngược 1-1. Chúng thực hiện các chức năng tương tự và có hình thức tương tự, nhưng các thuộc tính và phương thức đủ khác nhau để yêu cầu ánh xạ lại từ API này sang API khác.

## Xem thêm

* Microsoft Visual Studio
* ClickOnce
* Abstract Window Toolkit (AWT), the equivalent GUI application programming interface (API) for the Java programming language
* Visual Component Library (VCL) from Borland 
* Visual Test, test automation

## Tham khảo

## Liên kết ngoài

* MSDN: Building Windows Forms applications
* MSDN: Windows.Forms reference documentation
* MSDN: Windows Forms Technical Articles - Automating Windows Form with Visual Test