以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 列切换下拉窗口报错 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=152773) |
-- 作者:rjh4078 -- 发布时间:2020/7/21 19:19:00 -- 列切换下拉窗口报错 Dim t As Table t=Tables("其他出库单.其他出库明细") t.Cols("料号").DropForm =Nothing ’e.sender是一个Dropbox控件 If e.sender.Value<>"" Then Select Case e.sender.value Case "成品出库" t.Cols("料号").DropForm ="A" Case "其他出库" t.Cols("料号").DropForm ="B" Case Else t.Cols("料号").DropForm =Nothing End Select End If 错误是这样的 如果料号这个列第一次绑定了A窗口 再切到B窗口时就会报错,第一次绑定了B窗口 再切到A窗口时也会报错。如果第一次没有绑定窗口,随便哪个窗口都不报错。 .NET Framework 版本:4.0.30319.42000 Foxtable 版本:2020.3.31.8 错误所在事件:窗口,其他出库单,出库类别,TextChanged 详细错误信息: 索引超出范围。必须为非负值并小于集合大小。 参数名: index [此贴子已经被作者于2020/7/21 19:20:39编辑过]
|
-- 作者:rjh4078 -- 发布时间:2020/7/21 20:04:00 -- 新建了一个项目无法重现这个错误 郁闷 |
-- 作者:rjh4078 -- 发布时间:2020/7/21 20:18:00 -- 调用的目标发生了异常。 在 System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor) 在 System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments) 在 System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) 在 Foxtable.o 00o .ooo.O...(Object A_0, RowColEventArgs A_1, RecordGrid A_2) 索引超出范围。必须为非负值并小于集合大小。 参数名: index 在 System.ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument argument, ExceptionResource resource) 在 C1.Util.Win.AmbientPropertyMonitor.a() 在 C1.Util.Win.AmbientPropertyMonitor.b(Object A_0, EventArgs A_1) 在 System.EventHandler.Invoke(Object sender, EventArgs e) 在 System.Windows.Forms.Control.OnParentChanged(EventArgs e) 在 System.Windows.Forms.ContainerControl.OnParentChanged(EventArgs e) 在 System.Windows.Forms.Control.AssignParent(Control value) 在 System.Windows.Forms.Control.ControlCollection.Remove(Control value) 在 System.Windows.Forms.Form.ControlCollection.Remove(Control value) 在 System.Windows.Forms.Control.ControlCollection.Clear() 在 Foxtable.Oo。。。。。。.oO...oo.(String A_0) 在 Foxtable.Col.set_DropForm(String value) 在 UserCode.PrepareEdit(RowColEventArgs e) 做了个日志追踪 获取到这些信息 |
-- 作者:rjh4078 -- 发布时间:2020/7/21 20:20:00 -- If e.Col.name="料号" Then With Tables("其他出库单") If .current IsNot Nothing Then Dim r As Row=.current If r("出库类别")="成品出库" Then e.Col.DropForm ="cpjs" Else e.Col.DropForm ="物料查询" \'\'e.Col.DropForm ="发货客户检索" End If End If End With \' End If 代码位置调整了
|
-- 作者:rjh4078 -- 发布时间:2020/7/22 9:38:00 -- |
-- 作者:有点蓝 -- 发布时间:2020/7/22 9:41:00 -- 还有问题?如果新项目没有问题,一般就是有其它代码或者用法影响了。把项目复制到其它地方,无关的窗口表格全部删除掉测试,一步步排除看是哪里有影响 |
-- 作者:rjh4078 -- 发布时间:2020/7/22 10:18:00 -- 还是报同样的错误 我把触发点换了几个事件 或者单独做个按钮来触发 都不行 |
-- 作者:rjh4078 -- 发布时间:2020/7/22 10:20:00 -- If e.Col.name="料号" Then With Tables("其他出库单") If .current IsNot Nothing Then Dim r As Row=.current If r("出库类别")="成品出库" Then e.Col.DropForm ="cpjs" Else e.Col.DropForm ="物料查询" End If End If End With \' End If 红色部分的代码换成e.Col.DropForm =”“也会报错 只要这个列之前绑定了一个dropform再换其他的就会报错
[此贴子已经被作者于2020/7/22 10:23:03编辑过]
|
-- 作者:有点蓝 -- 发布时间:2020/7/22 10:23:00 -- 把项目复制到其它地方,无关的窗口表格全部删除掉测试,一步步排除看是哪里有影响。找不到原因把这个实例发上来 |
-- 作者:rjh4078 -- 发布时间:2020/7/22 16:02:00 -- 搞了一天 突然发现把cpjs的窗口名称改了就OK了 导出代码也查了一遍 只有这个地方调用了cpjs 不明白原理 |