菜单栏[MenuStrip]
来源:互联网 发布:spss数据统计分析实例 编辑:程序博客网 时间:2024/05/17 09:36
1设置完菜单后,每一个子菜单对应的事件中,来展示当前菜单的窗体
foreach (Form f in this.MdiChildren) { if (f.Name == "窗体名称") { return; } }
FrmYieldTransitEdit fyte = new FrmYieldTransitEdit(); fyte.MdiParent = this; fyte.Show();
2以选项卡的方式打开一个窗体
FrmYieldTransitEdit fyte = new FrmYieldTransitEdit(); //动态创建一个tabpage TabPage tabPage1 = new TabPage(); foreach (TabPage p in tabShowSubMenu.Controls ) { if (p.Name == "FrmYieldTransitEdit") { return; } } tabPage1.Text = "生产运送管理"; tabPage1.Name = "FrmYieldTransitEdit"; fyte.MdiParent = this; fyte.TopLevel = false; //把窗体作为page添加到tabPage中 tabPage1.Controls.Add(fyte); //添加选项卡tabPage到TabControl中 tabShowSubMenu.TabPages.Add(tabPage1); fyte.Show();3动态的自定义一个选项卡,把窗体加入到选项卡中
/// 把窗体作为选项卡的page /// </summary> /// <param name="str"></param> /// <param name="f"></param> public void addtabPage(string str, Form myForm) {
//是否存在相同的,相同的就不能再次添加到选项卡中 if (tabControlCheckHave(this.tabShowSubMenu, str)) { return; } else { tabShowSubMenu.TabPages.Add(str); tabShowSubMenu.SelectTab(tabShowSubMenu.TabPages.Count - 1); myForm.FormBorderStyle = FormBorderStyle.None; myForm.Dock = DockStyle.Fill; myForm.TopLevel = false; if (str == "生产任务管理") { myForm.Show();//如果在子窗体控制了dgv默认第一行的光标效果去掉后,在这里面最好先show然后再设置tab myForm.Parent = tabShowSubMenu.SelectedTab; } } }
/// <summary> /// 判断是否已经存在 /// </summary> /// <param name="tab"></param> /// <param name="tabName"></param> /// <returns></returns> public bool tabControlCheckHave(System.Windows.Forms.TabControl tab, String tabName) { for (int i = 0; i < tab.TabCount; i++) { if (tab.TabPages[i].Text == tabName) { tab.SelectedIndex = i; return true; } } return false; }
private void tabShowSubMenu_DrawItem(object sender, DrawItemEventArgs e) { /*如果将 DrawMode 属性设置为 OwnerDrawFixed, 则每当 TabControl 需要绘制它的一个选项卡时,它就会引发 DrawItem 事件*/ try { //this.tabControl1.TabPages[e.Index].BackColor = Color.LightBlue; Rectangle tabRect = this.tabShowSubMenu.GetTabRect(e.Index); e.Graphics.DrawString(this.tabShowSubMenu.TabPages[e.Index].Text, this.Font, SystemBrushes.ControlText, (float)(tabRect.X + 3), (float)(tabRect.Y + 3));//显示的字体 的位置 using (Pen pen = new Pen(Color.Wheat))//x四周的颜色 { tabRect.Offset(tabRect.Width - 15, 2); tabRect.Width = 15; tabRect.Height = 15; e.Graphics.DrawRectangle(pen, tabRect); } Color color = (e.State == DrawItemState.Selected) ? Color.GhostWhite : Color.White; using (Brush brush = new SolidBrush(color)) { e.Graphics.FillRectangle(brush, tabRect); } using (Pen pen2 = new Pen(Color.Red))//x的颜色 { Point point = new Point(tabRect.X + 3, tabRect.Y + 3); Point point2 = new Point((tabRect.X + tabRect.Width) - 3, (tabRect.Y + tabRect.Height) - 3); e.Graphics.DrawLine(pen2, point, point2); Point point3 = new Point(tabRect.X + 3, (tabRect.Y + tabRect.Height) - 3); Point point4 = new Point((tabRect.X + tabRect.Width) - 3, tabRect.Y + 3); e.Graphics.DrawLine(pen2, point3, point4); } e.Graphics.Dispose(); } catch (Exception ex) { MessageBox.Show(ex.Message); } } private void tabShowSubMenu_MouseDown(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Left) { int x = e.X; int y = e.Y; Rectangle tabRect = this.tabShowSubMenu.GetTabRect(this.tabShowSubMenu.SelectedIndex); tabRect.Offset(tabRect.Width - 0x12, 2); tabRect.Width = 15; tabRect.Height = 15; if ((((x > tabRect.X) && (x < tabRect.Right)) && (y > tabRect.Y)) && (y < tabRect.Bottom)) { this.tabShowSubMenu.TabPages.Remove(this.tabShowSubMenu.SelectedTab); } } }
4在点击事件中直接调用
private void YieldtransitMenu_Click(object sender, EventArgs e) { FrmYieldTransitEdit fyte = new FrmYieldTransitEdit(); addtabPage("生产运送管理", fyte); }
0 0
- 菜单栏[MenuStrip]
- MenuStrip控件
- MenuStrip控件
- 菜单栏
- 菜单栏
- 菜单栏
- 菜单栏
- 菜单栏
- 菜单栏
- C# 美化MenuStrip 自定义MenuStrip控件
- C# 美化MenuStrip 自定义MenuStrip控件
- MenuStrip基本代码
- winform menustrip的遍历
- winform menustrip的遍历
- MenuStrip的学习总结
- winform menustrip的遍历
- WinForm中MenuStrip控件
- WinForm中MenuStrip控件
- 【JAVA核心技术卷一】Exception异常
- github的傻瓜式教学,教你如何上传代码到github
- Tortoise SVN使用方法,简易图解
- maven mirror
- 用tomcat发布javaweb项目
- 菜单栏[MenuStrip]
- 【AndroidStudio】关于SVN的相关配置简介
- XML DOM nextSibling 属性
- percona tpcc的安装和使用
- Oracle的书写规范和优化建议
- Linux- 如何算出函数的运行时间
- online_judge_1010
- [Sublime Text 插件] 新建固定格式的Lua文件
- 52种8阶环(2015-11-18 17:21:51)