M文件中内的每个Callback都可以视为一个独立的可执行的接口,因此,任一个Callback触发后所执行的运算值若要在其他Callback中使用,就无法与MATLAB工作空间内的变量继续执行操作,也就是说每个Callback之间无法直接做沟通操作,因此变量的传递会有问题。主要的几种数据传递方式主要有:
(1)宣告为全局变量
将欲传递的变量在传递双方的Callback位置中都设置为全局变量,就可以直接在任一方的Callback中调用。这种方式是最简单的操作方式,但是当GUI全局变量太多时,在执行上就可能造成混乱。
(2)应用对象的userdata属性
通过对象的userdata属性可以直接进行各个Callback之间的数据存取操作。首先必须先将数据存储到一个特定的对象中,假设该对象的句柄值为uihandle,需要存储的数据为value,将输入以下程序即可:
set('uihandle','UserData',value);
此时,value数据已经存储到句柄为uihandle的对象内,在执行过程中若要取回该变量就可以通过以下方式在任一Callback中获取该值。
value=get('uihandle','UserData');
使用这种方式在操作上固然简单方便,但是每一个对象仅能存取一个变量值,因此当同一对像存储两次变量时,先前的变量值就会被覆盖掉,这样对于复杂的操作会造成诸多不便,因此一般都是用Userdata存取简单的数据。
(3)应用setappdata,getappdata与rmappdata
使用setappdata,getappdata与rmappdata函数进行数据传递是最用弹性的,此种方式在使用上非常类似UserData属性的操作,但它克服了UserData的缺点,是一个对象可以存取多个变量,因此会比UserData属性在操作上更具有弹性和数据安全性。
用法如下:
setappdata(uihandle,'VariableName',vaule);
value=getappdata(uihandle,'VariableName');
rmappdata(uihandle,'VariableName');
另外一种用法是结合handles结构与guidata函数,虽然在操作上非常简单,但是当变量过多时会使GUI在程序上变得比较复杂,日后程序排错时可能比较费时,因此不推荐使用。
使用方式如下:
如果在对象的Callback中存取变量值到VARdata字段中,使用如下程序:
handles.VARdata=A;%将A存放到handles的VARdata字段中去
guidata(hObject,handles);%将新的handles值存储起来
如果在另一个Callback中使用变量A,使用如下程序:
A=handles.VARdata;

最新文章

  1. angularjs 过滤器详解
  2. Atitit.识别损坏的图像
  3. POJ 1328 Radar Installation 贪心 难度:1
  4. hdu 2372 El Dorado (dp)
  5. 【Away3D代码解读】(五):动画模块及骨骼动画
  6. 使用AlertDialog创建对话框的大致步骤
  7. hdu 4736 This Is The Job The Bear Finds(2013年成都ACM网络赛)
  8. hdu Max Sum Plus Plus(dp+滚动数组)
  9. Java中参数传递问题
  10. AngularJS进阶(五)Angular实现下拉菜单多选
  11. 蚂蚁 uva 10881
  12. Django 登录验证-自动重定向到登录页
  13. poj 2406 求字符串中重复子串的个数
  14. 16 多校8 Rikka with Parenthesis II
  15. 1.angular之Hello World
  16. yii中缓存(cache)详解
  17. POJ 1679 The Unique MST (次小生成树kruskal算法)
  18. Hibernate中常见的异常处理
  19. 【leetcode 简单】 第七十五题 第一个错误的版本
  20. 栈的应用实例——中缀表达式转换为后缀表达式

热门文章

  1. 字典(dict),增删改查,嵌套
  2. ae(ArcEngine) java swing开发入门系列(2):ae的类型转换和Proxy类说明
  3. WinForm 窗体
  4. HDU 3709 Balanced Number (数位DP)
  5. ActiveX、OLE和COM/DCOM
  6. BZOJ 4070:[APIO2015]雅加达的摩天楼 最短路
  7. XML(可拓展标记语言)
  8. 从SAP客户主数据里直接创建商机(Opportunity)
  9. Spring归纳
  10. RenderBody,RenderPage和RenderSection