コード例 #1
0
        //建议在该方法内添加菜单项。用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"));
        }
コード例 #2
0
        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}");
        }