Previous topicNext topic
Help > 开发指南 > 预备知识 >
如何引用窗体菜单

有时候我们需要在其他地主引用窗体菜单并在合适的时机执行菜单里面的命令。那我们该如何引用窗体菜单呢?

Vb.Net
Dim tbl As SmGrid=Proj.CurrentSmGrid
'方法一:根据表绑定的菜单引用菜单命令
Dim cmd As SmCommand=tbl.GridMenu.CommandHolder.Commands("新增")
cmd.PerformClick()

'方法二:在菜单命令里面引用相同菜单里面的其他命令
Dim menu As BaseGridMenu= Proj.CurrentClickedCommandEventArgs.SourceControl.Parent
Dim cmd1 As C1Command=menu.CommandHolder.Commands("cmdSave")
cmd1.PerformClick()

'方法三:可以通过窗体的主菜单引用
Dim cmd2 As C1Command=tbl.Form.MainToolBar.CommandHolder.Commands("cmdSave")
cmd2.PerformClick()

C#
SmGrid tbl = Proj.CurrentSmGrid;
// 方法一:根据表绑定的菜单引用菜单命令
SmCommand cmd = tbl.GridMenu.CommandHolder.Commands["新增"] as SmCommand;
cmd.PerformClick();

// 方法二:在菜单命令里面引用相同菜单里面的其他命令
BaseGridMenu menu = Proj.CurrentClickedCommandEventArgs.SourceControl.Parent;
C1Command cmd1 = menu.CommandHolder.Commands["cmdSave"];
cmd1.PerformClick();

// 方法三:可以通过窗体的主菜单引用
C1Command cmd2 = tbl.Form.MainToolBar.CommandHolder.Commands["cmdSave"];
cmd2.PerformClick();

这里要注意的是,第三种方法,通过SmForm.MainToolBar属性来引用菜单的话,在系统默认的模板窗体中这个代码可以正常的使用。如果是自定义窗体的话,这个属性就是一个空的对象容器,需要自己在窗体加载时将自己使用的菜单控件赋值到这个变量后才可以使用。请一定注意此方法的使用场景。