2012-06-08 83 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