0

在我的“主”窗口中,我有一个按钮可以打开另一个窗口“列表”。在列表窗口中,我有两个列表框,左边的一个有名字,右边的一个我给它添加名字。但是,一旦单击“列表”窗口上的“确定”按钮,我就无法将添加的名称传递到“主”窗口。

function Done_Button_Callback(hObject, eventdata, handles)

    SelectedFaults = get(handles.SelectedFaults_Listbox,'String');  
    set(Main, handle.Faults_Listbox,'String',SelectedFaults)   
    close(Insert_Fault)

我得到的错误是:

 ??? No appropriate method, property, or field Faults_Listbox for class handle.

Error in ==> Insert_Fault>Done_Button_Callback at 380

set(Main, handle.Faults_Listbox,'String',SelectedFaults)

Error in ==> gui_mainfcn at 96
    feval(varargin{:});
  Error in ==> Insert_Fault at 42

gui_mainfcn(gui_State, varargin{:});
??? Error while evaluating uicontrol Callback

两个 m 文件都在同一个目录中。我被困住了。谢谢您的帮助

4

1 回答 1

1

您的代码没有显示变量“句柄”是如何定义的。您指的是 “handles” 吗? 在这种情况下,handles结构是Insert_Fault图自带的,与Main图的handles结构无关。

如果要修改主窗口中的列表框,可以将 Faults_Listbox 的句柄从主图窗传递给 Insert_Fault 图,例如通过 userdata 或 appdata

下面的代码应该做你想做的事。

在主要:

% Callback of a button in main that opens the Insert_Fault figure
function Open_Insert_Fault_Callback(hObject, eventdata, handles)
Insert_Fault('UserData', struct('Mainhandles', handles));

在 Insert_Fault 中:

function Done_Button_Callback(hObject, eventdata, handles)
SelectedFaults = get(handles.SelectedFaults_Listbox,'String');  

userdata=get(handles.figure1, 'UserData');
Mainhandles=userdata.mainhandles;

set(Mainhandles.Faults_Listbox,'String',SelectedFaults)   
close(Insert_Fault)
于 2012-06-08T15:38:42.450 回答