多窗口应用程序由两个或多个共享数据的应用程序组成。应用程序之间共享数据的方式取决于设计。一个常见的设计涉及两个应用程序:主应用程序和对话框。通常,主应用程序有一个打开对话框的按钮。当用户关闭对话框时,对话框将用户的选择发送到主窗口,主窗口执行计算和更新UI。
这些应用程序在不同的时间以不同的方式共享信息:
当对话框打开时,主应用程序通过使用输入参数调用对话框应用程序将信息传递给对话框。
当用户单击好吧按钮,对话框通过在主应用程序中调用带有输入参数的公共函数将信息返回给主应用程序。
要创建上一节描述的应用程序,必须创建两个独立的应用程序(一个主应用程序和一个对话框应用程序)。然后执行这些高级任务。每个任务包含多个步骤。
将信息发送到对话框——写一startupFcn
在接受输入参数的对话框应用程序中进行回调。其中一个输入参数必须是主应用程序对象。然后,在主应用程序中,用输入参数调用对话框应用程序。
返回信息到主应用程序-在主应用程序中编写一个公共函数,根据用户在对话框中的选择更新UI。因为它是一个公共函数,对话框可以调用它并将值传递给它。
当窗口关闭时管理它们- - -写CloseRequest
当Windows关闭时,两个应用程序中执行维护任务的回调。
要查看此过程中所有步骤的实现,请参见打开对话框的绘图应用程序.
执行以下步骤将值从主应用程序传递到对话框应用程序。
的输入参数startupFcn
回调,然后向回调添加代码。打开对话框应用程序进入代码视图.在编辑器选项卡上,单击应用程序输入参数.在应用程序输入参数对话框中,输入以逗号分隔的变量名列表作为输入参数。将其中一个输入指定为存储主应用程序对象的变量。然后单击好吧.
向startupFcn
的值mainapp
.
函数startupFcn(应用,mainapp,深圳,c)% Store主应用程序对象app.CallingApp = mainapp;%处理sz和c的输入...结束
的完整代码示例startupFcn
回调,看打开对话框的绘图应用程序.
从主应用程序的回调中调用对话框应用程序代码视图的回调函数选项按钮。此回调将禁用选项按钮以防止用户打开多个对话框。接下来,它获取要传递给对话框的值,然后用输入参数和输出参数调用对话框应用程序。输出参数是对话框app对象。
函数OptionsButtonPushed(应用程序、事件)%在对话框打开时禁用绘图选项按钮app.OptionsButton.Enable =“关闭”;获取szvalue和cvalue%……使用输入值调用对话框app.DialogApp = DialogAppExample (app, szvalue cvalue);结束
在主应用程序中定义一个属性来存储对话框应用程序。保持主应用程序处于打开状态,创建一个名为DialogApp
.选择财产>私有财产在编辑器选项卡。属性中的属性名属性
块DialogApp
.
属性(Access = private) DialogApp%对话框app结束
执行以下步骤将用户的选择返回到主应用程序。
在主应用程序中创建一个公共函数来更新UI。打开主应用到代码视图并选择函数>公共函数在编辑器选项卡。
将默认函数名更改为所需的名称,并为要从对话框传递到主应用程序的每个选项添加输入参数应用程序
参数必须在前面,因此在该参数之后指定其他参数。然后将代码添加到处理输入和更新主应用程序的函数中。
函数updateplot (app,深圳,c)%进程sz和c...结束
有关公共函数的完整代码示例,请参见打开对话框的绘图应用程序.
在对话框app中创建一个属性来存储主应用程序代码视图,并创建一个名为CallingApp
.选择财产>私有财产在编辑器选项卡。属性中的属性名属性
块CallingApp
.
属性(Access = private%主应用程序对象结束
从对话框应用程序的回调中调用公共函数。保持对话框应用程序打开,为好吧按钮。
在这个回调中,传递CallingApp
属性和用户对公共函数的选择。然后调用删除
命令,关闭对话框。
函数ButtonPushed(应用程序、事件)%调用主应用程序的公共函数updateplot (app.CallingApp app.EditField.Value app.DropDown.Value);%删除对话框删除(应用)结束
当用户关闭两个应用程序时,它们都必须执行某些任务。在对话框关闭之前,必须重新启用选项在主应用程序关闭之前,它必须确保对话框应用程序也关闭。
打开对话框应用程序进入代码视图,右键单击app.UIFigure
对象浏览器组件,并选择回调>添加CloseRequestFcn回调.然后添加代码,重新启用主应用程序中的按钮,并关闭对话框应用程序。
函数DialogAppCloseRequest(应用程序、事件)%在主程序中启用Plot Options按钮app.CallingApp.OptionsButton.Enable =“上”;%删除对话框删除(应用)结束
打开主应用到代码视图,右键单击app.UIFigure
对象浏览器组件,并选择回调>添加CloseRequestFcn回调.然后添加删除两个应用程序的代码。
函数MainAppCloseRequest(应用程序、事件)%删除两个应用程序删除(app.DialogApp)删除(应用)结束
这个应用程序包括一个主绘图应用程序,它有一个用于在对话框中选择选项的按钮。的选项按钮使用输入参数调用对话框应用程序。在对话框中,好吧Button通过调用主应用程序中的公共函数将用户的选择发送回主应用程序。