tích hợp thêm menu vào System menu của ứng dụng để tiện cho người dùng khi sữ dụng chương trình mà mọi người phát triển. Bài viết này mình đọc được laptrinhvb.net khá thú vị, nên mang vể chia sẽ lại cho anh em nào đang tìm hiểu và cần như bản thân mình đang hoàn thiện chương trình thất tốt.Bên dưới là hình ảnh demo chương trình để mọi người hình dung ra việc thêm menu vào chương trình là thế nào.
Cái menu mà bạn khoanh tròn được gọi là System Menu (hoặc Window Menu). Mặc định trong C# WinForms (và cả .NET nói chung), không có thuộc tính (property) có sẵn trong bảng Properties để bạn kéo thả hay chỉnh sửa menu này.
Để thêm mục vào đó, bạn cần can thiệp sâu hơn một chút bằng cách sử dụng Windows API (Win32 API).
Dưới đây là hướng dẫn và đoạn code mẫu để bạn có thể copy vào project của mình:
Cách thực hiện
Bạn cần làm 3 bước chính:- Khai báo các hàm API từ thư viện user32.dll của Windows.
- Thêm Item vào menu khi Form khởi động.
- Bắt sự kiện khi người dùng click vào Item đó (thông qua hàm WndProc).
Tuy nhiên, bạn có thể làm theo cách dưới đây để thêm mới các menu tùy ý bạn.
using System;
using System.Windows.Forms;
using System.Runtime.InteropServices;
public class CustomForm : Form
{
// P/Invoke constants
private const int WM_SYSCOMMAND = 0x112;
private const int MF_STRING = 0x0;
private const int MF_SEPARATOR = 0x800;
// P/Invoke declarations
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
private static extern IntPtr GetSystemMenu(IntPtr hWnd, bool bRevert);
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
private static extern bool AppendMenu(IntPtr hMenu, int uFlags, int uIDNewItem, string lpNewItem);
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
private static extern bool InsertMenu(IntPtr hMenu, int uPosition, int uFlags, int uIDNewItem, string lpNewItem);
// ID for the About item on the system menu
private int SYSMENU_ABOUT_ID = 0x1;
public CustomForm()
{
}
protected override void OnHandleCreated(EventArgs e)
{
base.OnHandleCreated(e);
// Get a handle to a copy of this form's system (window) menu
IntPtr hSysMenu = GetSystemMenu(this.Handle, false);
// Add a separator
AppendMenu(hSysMenu, MF_SEPARATOR, 0, string.Empty);
// Add the About menu item
AppendMenu(hSysMenu, MF_STRING, SYSMENU_ABOUT_ID, "&About…");
}
protected override void WndProc(ref Message m)
{
base.WndProc(ref m);
// Test if the About item was selected from the system menu
if ((m.Msg == WM_SYSCOMMAND) && ((int)m.WParam == SYSMENU_ABOUT_ID))
{
MessageBox.Show("Custom About Dialog");
}
}
}
Như vậy đã hoàn thành, chúc mọi người thành công.Theo LapTrinhVB.Net


Hướng dẫn bình luận
Mọi người để lại bình luận góp ý, nhận xét về những bài viết mà mình chia sẽ văn minh lịch sự hay kích động, Không spam, không chèn link quảng cáo, bán hàng, Không sử dụng từ ngữ thô tục, xúc phạm, kích động, Link chỉ được phép khi thực sự liên quan đến nội dung bài viết, Không mạo danh người khác hoặc sử dụng email giả, Bình luận vi phạm sẽ bị xóa không cần thông báo trước.Mọi người lưu ý răng, nếu muốn chia sẽ code ở bình luần thì cần mã hóa code trước khi bỏ vào khung nhé. :)
⑴ Chèn ℂ𝕤𝕤 theo mẫu :
[pre css] CSS [/pre]⑵ Chèn ℍ𝕥𝕞𝕝 theo mẫu :
[pre html] HTML [/pre]⑶ Chèn 𝕁𝕒𝕧𝕒𝕤𝕔𝕣𝕚𝕡𝕥 theo mẫu :
[pre js] Javascript [/pre]🖼️ Chèn 𝕀𝕞𝕒𝕘𝕖 theo mẫu :
[img] Link hình ảnh [/img]🎞️ Chèn Video 𝕐𝕠𝕦𝕥𝕦𝕓𝕖 theo mẫu :
[youtube] Link Youtube [/youtube]0 Nhận xét