我有一个GUI,其中某些值显示在editable textbox中。出于某种原因,我无法用鼠标复制这些值。我可以选择文本,但是当我右键单击所选文本时,不会出现下拉菜单。我一直在寻找这个地方。我错过了什么?
答案 0 :(得分:3)
如果需要,您应该自己实施上下文菜单,使用uicontextmenu
uicontrol,并使用uimenu
向其中添加项目。见这里:http://www.mathworks.com/help/techdoc/ref/uicontextmenu.html
答案 1 :(得分:2)
当您右键单击时,默认情况下可编辑文本框不会显示上下文菜单,但如果您想要将文本复制到剪贴板,可以通过以下几种方法实现:
正如Mikhail在评论中提及的那样,您仍然可以突出显示该文本,然后按 Ctrl + C 将其复制到剪贴板。< / p>
作为Itamar mentions in his answer,您可以使用UICONTEXTMENU和UIMENU功能为可编辑文本框创建自己的上下文菜单。这是一个使用函数CLIPBOARD将可编辑文本字符串添加到剪贴板的示例实现:
hFigure = figure; %# Create a figure
hEdit = uicontrol(hFigure,'Style','edit',... %# Create an editable text box
'String','Enter your name here',...
'Position',[30 50 130 20]);
hCMenu = uicontextmenu; %# Create a context menu
uimenu(hCMenu,'Label','Copy',... %# Create a menu item
'Callback',@(hObject,eventData) clipboard('copy',get(hEdit,'String')));
set(hEdit,'UIContextMenu',hCMenu); %# Add context menu to control
现在,您可以右键单击控件以显示一个菜单,其中包含一个选项:“复制”。请注意,通过选择此菜单项,它会将可编辑的文本字符串复制到剪贴板,而不必先突出显示该文本。
您可以为可编辑文本框设置'ButtonDownFcn'
property,以便右键单击控件会自动将文本字符串复制到剪贴板,而无需突出显示文本或选择菜单项。首先,您必须将此m文件功能保存到路径:
function right_click_copy(hObject,eventData)
hFigure = get(hObject,'Parent'); %# Get the parent object
while ~strcmp(get(hFigure,'Type'),'figure') %# Loop until it is a figure
hFigure = get(hFigure,'Parent'); %# Keep getting the parents
end
if strcmp(get(hFigure,'SelectionType'),'alt') %# Check for a right click
clipboard('copy',get(hObject,'String')); %# Copy the object string to
%# the clipboard
end
end
此函数使用父图的'SelectionType'
property来检查按下了哪个鼠标按钮,并使用CLIPBOARD函数将对象字符串复制到剪贴板。现在,您可以按如下方式创建可编辑的文本控件:
hFigure = figure; %# Create a figure
hEdit = uicontrol(hFigure,'Style','edit',... %# Create an editable text box
'String','Enter your name here',...
'Position',[30 50 130 20],...
'ButtonDownFcn',@right_click_copy);
这是三者中最快捷,最简单的选项,因为只需单击鼠标即可将可编辑文本字符串复制到剪贴板。
答案 2 :(得分:-1)
您是否只想将可编辑文本框设为“启用”?
集(handles.editbox1, '上' '启用',);
(假设您拥有该GUI对象的'句柄'。)
这应该可以使编辑框可编辑。