0

「メイン」ウィンドウから、別のウィンドウ「リスト」を開くボタンがあります。リスト ウィンドウには 2 つのリスト ボックスがあり、左側には名前があり、右側には名前を追加します。ただし、「リスト」ウィンドウの「OK」ボタンをクリックすると、リストに追加された名前を「メイン」ウィンドウに渡すことができません。

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

あなたのコードは、変数「ハンドル」がどのように定義されているかを示していません。「ハンドル」のことですか?この場合、ハンドル構造は Insert_Fault フィギュアに付属するものであり、メイン フィギュアのハンドル構造とは何の関係もありません。

メイン ウィンドウのリストボックスを変更する場合は、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 に答える