2012-06-08 58 views
0

从我的“主”窗口中,我有一个打开另一个窗口“List”的按钮。在列表窗口中,我有两个列表框,左边的列表框中有名称,右边的​​列表框中添加了名称。但是我不能添加的名称传递到列表中的“主要”窗口,一旦我点击“按钮‘列表’窗口中的'OK从一个m文件传递句柄到其他m文件

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文件在同一目录下。我卡住了。谢谢你的帮助

回答

1

您的代码并不显示变量如何“处理”的定义。你的意思是“把手” ?在这种情况下,句柄结构是随Insert_Fault图形一起提供的,并且与句柄无关主图的结构。

如果要修改主窗口中的列表框,可以将Faults_Listbox的句柄从主图传递到Insert_Fault图,例如通过 userdata or 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) 
+0

美妙......有一点点调整您的代码工作。非常感谢您的帮助 – VMI