在 matlab 中,如果我有一个带有句柄 cxmenu_Options
的上下文菜单,它链接到不同的三个 uicontrol
对象。
上下文菜单回调函数内部:
代码演示:
function demoOnContextMenus
hFigure = figure;
hControl = uicontrol( ...
'Parent' , hFigure , ...
'Style' , 'Edit' , ...
'Position' , [200 200 180 40] , ...
'Tag' , 'IamControl' , ...
'String' , 'UI-Control');
hCxMenu = uicontextmenu( ...
'Tag' , 'IamMenu' , ...
'Callback',@CxMenuCallback);
set(hControl,'UIContextMenu',hCxMenu);
function CxMenuCallback(objectHandle,eventData)
tag = get(gcbo,'tag');
helpdlg(tag);
end
end
如何获取调用上下文菜单的 uicontrol
句柄?
最佳答案
有两种方法可以访问句柄:
gco
返回当前选定对象的句柄。因此 tag = get(gco,'tag')
将返回 IamControl
。
或者,您可以将句柄直接传递给回调(以防层次结构变得更加复杂,因为 gco
只会为您提供最终链的顶级句柄):
handleToPass = hControl;
hCxMenu = uicontextmenu( ...
'Tag' , 'IamMenu' , ...
'Callback',@(oh,evt)CxMenuCallback(oh,evt,handleToPass));
set(hControl,'UIContextMenu',hCxMenu);
function CxMenuCallback(objectHandle,eventData,handleOfCaller)
tag = get(handleOfCaller,'tag');
helpdlg(tag);
end
关于matlab - 获取上下文菜单调用者的句柄,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14709472/