//建议在该方法内添加菜单项。用HandleCreated事件也行 protected override void OnHandleCreated(EventArgs e) { base.OnHandleCreated(e); //取得窗体菜单句柄 var hMenu = SystemMenuUtil.GetSystemMenuHandle(this); //添加分隔条 SystemMenuUtil.AddSeparator(hMenu); //添加普通项 SystemMenuUtil.AddItem(hMenu, "普通项", item_Clicked); //添加一个能展开子菜单的项在【关闭】之上 SystemMenuUtil.AddDropDown(hMenu, "展开菜单", contextMenu1, SystemMenuStandardItem.Close); //再添加一个勾选项演示勾选状态的处理 SystemMenuUtil.AddItem(hMenu, "窗口置顶", (_, ee) => { //注意这里获取到的是项原本的勾选状态 var isChecked = ee.Info.Checked; //所以原本是勾选的话,意味着要取消置顶,反之亦然 TopMost = !isChecked; WriteMessage($"窗口已{(isChecked ? "取消" : "")}置顶"); //最后切换勾选状态 SystemMenuUtil.SetItemChecked(ee.Info.ParentMenuHandle, ee.Info.Id, false, !isChecked); }); SystemMenuUtil.AddItem(hMenu, "作者主页", (_, __) => Process.Start("https://www.cnblogs.com/ahdung/p/SystemMenuUtil.html")); }
private void btnAddDropDown_Click(object sender, EventArgs e) { var id = SystemMenuUtil.AddDropDown(HMenu, txbNewDropDownText.Text, contextMenu1, DetermineItem(out var byPosition), byPosition); WriteMessage($"已添加展开项【{txbNewDropDownText.Text}】,ID: {id}"); }