以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  新版问题报告  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=86649)

--  作者:凡夫俗子
--  发布时间:2016/6/22 16:12:00
--  新版问题报告
窗口表使用动态加载方案

在打开窗口时,判断表是否有加载,没有加载表则加载表,关闭本窗口,再重新 打开 窗口这种方式进行处理。

相关窗口在之前的版本下运行正常,在最新版时提示

有关调用实时(JIT)调试而不是此对话框的详细信息,
请参见此消息的结尾。

************** 异常文本 **************
System.InvalidOperationException: 在创建窗口句柄之前,不能在控件上调用 Invoke 或 BeginInvoke。
   在 System.Windows.Forms.Control.MarshaledInvoke(Control caller, Delegate method, Object[] args, Boolean synchronous)
   在 System.Windows.Forms.Control.Invoke(Delegate method, Object[] args)
   在 Foxtable.CustomPictureBox.O_o____o(Object A_0, AsyncCompletedEventArgs A_1)
   在 System.Windows.Forms.PictureBox.OnLoadCompleted(AsyncCompletedEventArgs e)
   在 System.Windows.Forms.PictureBox.LoadCompletedDelegate(Object arg)

点继续能打开窗口,运行正常。

二次打开此窗口正常,没有报错。

重新 启动系统,先手动加载表,再运行此窗口,也不报错。


如果窗口新做,采用原动态加载函数进行加载,运行也正常,不报错。


问题是之前版本运行正常的窗口在新的软件里运行不正常,请官方检查 一下。

--  作者:大红袍
--  发布时间:2016/6/22 16:16:00
--  

foxtable,并没有打开窗口前事件,你代码写到AfterLoad事件肯定是有点问题的。 

 

请尽量在打开窗口前把数据表加载出来。否则,你就用屏蔽错误的方式 http://www.foxtable.com/help/topics/2655.htm

 

 

 


--  作者:凡夫俗子
--  发布时间:2016/6/22 16:18:00
--  
代码写到AfterLoad事件里 当初也是你给的方法了,当时都没有问题,现在621版本突然有问题了
--  作者:大红袍
--  发布时间:2016/6/22 16:19:00
--  
 实例发上来测试。
--  作者:凡夫俗子
--  发布时间:2016/6/22 17:03:00
--  
经测试,如果窗口里没有图片控件,并且图片控件有设置图片。就会报错。如果仅有图片控件,不放图片也不报错。
新做窗口也能重新必须测试出错误。
另经测试:如果在设计状态不给图片 控件指定 图片,而是在窗口打开一通过代码对图片控件进行图片设置也不会报错
[此贴子已经被作者于2016/6/22 17:14:55编辑过]

--  作者:大红袍
--  发布时间:2016/6/22 17:48:00
--  

 是否已经是最新版foxtable了?既然知道是这个原因,那就规避一下。因为afterLoad事件是已经打开窗口了的,此时再关闭重新打开肯定会导致出点问题。


--  作者:凡夫俗子
--  发布时间:2016/6/22 21:36:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:窗口问题.foxdb


最简实例做出来了,其实貌似与重新打开窗口没多大关系,本实例没有重新打开窗口

做一个测试窗口也很简单。

一,窗口里放一图片控件。
二,图片控件里随便放一图片。
三,在窗口AfterLoad事件里 写上 msgbox(1)

故障就100%再现了。相信这一问题解决,窗口重新打开也就没问题了。
[此贴子已经被作者于2016/6/22 21:52:21编辑过]

--  作者:大红袍
--  发布时间:2016/6/22 21:47:00
--  

 代码这样写

 

e.Form.visible = True
msgbox(2)


--  作者:凡夫俗子
--  发布时间:2016/6/23 15:42:00
--  
e.Form.visible = True  加上这句是可以解决问题。但屏幕可以明显看到窗口打开了再关闭,再打开的过程,实则不可取。
--  作者:大红袍
--  发布时间:2016/6/23 16:16:00
--  
 那你可以控制窗口的left和top属性,放到一个不可见的区域不就行了。