CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  C#

求助:我想在線程中對datagride進行綁定數據,但是在綁定的時候會出錯!請指點!

楼主dunao([別人騎馬,俺騎驢,比上不足,比下有余])2005-02-04 08:25:48 在 .NET技术 / C# 提问

我想在線程中對datagride進行綁定數據,但是在綁定的時候會出錯!  
  錯誤:  
            不可以在線程中對父類進行操作!  
  希望會的朋友能指點謝謝! 问题点数:20、回复次数:6Top

1 楼hedonister(冰戈)回复于 2005-02-04 09:05:39 得分 2

没见过啊,怎么回事?Top

2 楼shangerhe(king63.com)回复于 2005-02-04 09:09:41 得分 2

把代码贴出来大家帮你研究一下  
  Top

3 楼dunao([別人騎馬,俺騎驢,比上不足,比下有余])回复于 2005-02-04 10:25:13 得分 0

//定義委派  
  delegate   void   ShowData(DataSet   oData);  
  //線程用的函數  
  private   void   ThreadGride()  
  {  
  oDs   =   Q.QruGride("");  
  //實例化datagride委派  
  ShowData   ShowGride;  
  ShowGride   =   new   ShowData(DataShow);  
  ShowGride(oDs);  
  }  
   
  ///   <summary>  
  ///   委派調用  
  ///   </summary>  
  ///   <param   name="oShowData"></param>  
  private   void   DataShow(DataSet   oShowData)  
  {  
  dgData.DataSource   =   oShowData.Tables[0];  
  }  
   
  Top

4 楼hbxtlhx(平民百姓-自已动手,丰衣足食)回复于 2005-02-04 10:37:01 得分 8

你在不同的线程中操作要使用Invoke,不能直接操作,你可以选参考一下Invoke的用法.多试几次就出来了,这是个常见的问题.对于一些复杂的控件在不同的线程里操作都是应用Invoke的,比如DataGrid,TreeView等,但是对于一些像textBox,Button等控件就没有这个问题.Top

5 楼LoveCherry(论成败,人生豪迈;大不了,重头再来!^_^)回复于 2005-02-04 10:38:01 得分 8

Control.Invoke   的作用是发送一条Windows消息到控件的线程上执行指定的Delegate。  
   
  如果委托出现异常,那么就直接把这个异常拦截掉,然后在调用Control.Invoke的线程上抛出。  
   
  我倒是希望有个选项把这个拦截去掉。如果出现错误,直接在控件的线程上抛出,然后显示错误。这多好啊。  
   
  否则的话,出现错误,根本就没有提示。也不好调试。  
   
  Top

6 楼dunao([別人騎馬,俺騎驢,比上不足,比下有余])回复于 2005-02-04 13:03:37 得分 0

//定義委派,在線程中調用給datagride  
  //進行綁定數據  
  private   delegate   void   ShowData(DataSet   oData);  
  private   ShowData   GrideShow;  
  GrideShow   =   new   ShowData(DataShow);  
  ///   用線程對datagride進行綁定函數  
  ///   </summary>  
  private   void   ThreadGride()  
  {  
  try  
  {  
  oDs   =   Q.QruGrideB(18,sLang);  
  IAsyncResult   r   =   BeginInvoke(GrideShow,   new   object[]   {oDs});  
  }  
  catch(Exception   e)  
  {  
  MessageBox.Show(e.Message,"Thread");  
  }  
  }  
   
  ///   <summary>  
  ///   用於委派函數  
  ///   </summary>  
  ///   <param   name="oShowData"></param>  
  private   void   DataShow(DataSet   oShowData)  
  {  
  dgData.DataSource   =   oShowData.Tables[0];  
  }Top

相关问题

  • delphi是否可以设定编译程序的时候保存源代码
  • 关于如何让自己的程序在特定时候运行。
  • 【求助】在创建进程的时候,可否规定该进程的线程数啊?
  • DELPHI主程序的参数是什么时候指定的,如何定义?它具有什么作用?
  • 在程序中使用WinExec调用某应用程序的时候如何指定打开的位置
  • 多条件查询的时候,写存储过程的时候怎么写where条件 ,条件数不确定啊
  • 用的datagride控件,按编辑,更新的时候,更新不了?
  • 菜单问题:如何在应用程序初始化的时候Disabled某些指定的菜单项?
  • <VC++时尚编程百例>:工具条类一定要建立吗(当然是用工具条的时候)?
  • 怎样实现一个特定程序启动的时候另外一个也启动?

关键词

  • 线程
  • 控件
  • 委派
  • 綁定
  • 線程
  • datashow
  • oshowdata
  • showdata
  • grideshow
  • showgride

得分解答快速导航

  • 帖主:dunao
  • hedonister
  • shangerhe
  • hbxtlhx
  • LoveCherry

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo