以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  主窗口里建table报错  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=135496)

--  作者:lur320
--  发布时间:2019/5/28 10:55:00
--  主窗口里建table报错
If Typeof e.sender Is winform.RadioButton Then
       If e.sender.checked=True Then
             Select Case e.sender.name
                Case "customBOMtitle"
                              Dim dtb As New DataTableBuilder("BOOM")
                           dtb.AddDef("6", Gettype(String),250)
                dtb.Build()
 如果没有这个datatablebuilder的代码,就不会报错,
如果有,则会执行2次datatablebuilder
MessageBox.Show(DataTables("customBOMtitle").DataCols.count)
        End Select
    End If
End If

这段代码是在主窗口的一个RadioButton 上。发现会报错。form(新增BOM)就是主窗口
[此贴子已经被作者于2019/5/28 11:09:48编辑过]

--  作者:有点甜
--  发布时间:2019/5/28 11:06:00
--  

1、我测试没问题

 

2、你试试改成

 

If Typeof e.sender Is winform.RadioButton Then
    If e.sender.checked=True Then
        Select Case e.sender.name
            Case "RadioButton2"
                Dim dtb As New DataTableBuilder("BOOM")
                dtb.AddDef("6", Gettype(String),250)
                Tables("窗口2_Table1").DataSource = dtb.BuildDataSource

        End Select
    End If
End If

 

3、如果还是不行,请做一个对应实例发上来测试


--  作者:lur320
--  发布时间:2019/5/28 11:23:00
--  

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:21312321_201905281120.zip

点击2次手册抬头就会死机。41是列的数量,也会msg包2次。

开发者密码是一个空格。


--  作者:有点甜
--  发布时间:2019/5/28 12:23:00
--  

If Typeof e.sender Is winform.RadioButton Then
   \' For Each c As Winform.RadioButton In e.Form.Controls("GroupBox1").children
     \'\'   c.BackColor=Color.Transparent
  \'  Next
    If e.sender.checked=True Then
       \' e.sender.BackColor=Color.Lime

        Select Case e.sender.name
            \'Case "customBOMconsume","customBOMlist"
                \'Tables("新增BOM_Table1").DataSource = DataTables(e.sender.name)
                \'Tables("新增BOM_Table1").AutoSizeHeaderRow
                \'Tables("新增BOM_Table1").AutoSizeCols
            Case "customBOMtitle"
                \'Dim currline As Integer
                \'Dim Colline As Integer
                \'colline=DataTables("customBOMtitle").DataCols.count
                \'Dim dr2 As DataRow
                Dim dtb As New DataTableBuilder("BOOM")
               
                dtb.AddDef("1", Gettype(String),250)
                dtb.AddDef("2", Gettype(String),250)
                dtb.AddDef("3", Gettype(String),250)
                \'dtb.AddDef("4", Gettype(String),250)
                \'dtb.AddDef("5", Gettype(String),250)
                \'dtb.AddDef("6", Gettype(String),250)
                Tables("新增BOM_Table1").DataSource = dtb.BuildDataSource
MessageBox.Show(DataTables("customBOMtitle").DataCols.count)
                \'For Each itemcol As DataCol In DataTables("customBOMtitle").DataCols
                    \'If currline <= Colline/3 Then
                        \'dr2 =DataTables("BOOM").addnew
                        \'dr2("1")=itemcol.Name
                        \'currline +=1
\'MessageBox.Show(1)
                    \'ElseIf currline <= Colline/3*2 Then
                        \'dr2 =DataTables("BOOM").find("[3] is null")
                        \'dr2("3")=itemcol.Name
                        \'currline +=1
\'MessageBox.Show(2)
                    \'Else
                        \'dr2 =DataTables("BOOM").find("[5] is null")
                        \'dr2("5")=itemcol.Name
                        \'currline +=1
\'MessageBox.Show(3)
                    \'End If
                \'Next
                \'\'
        End Select
    End If
End If


--  作者:lur320
--  发布时间:2019/5/28 12:27:00
--  
你没理解我的意思。
我后来上传到实例,已经没有Tables("新增BOM_Table1").DataSource = dtb.BuildDataSource这句话了。依旧报错。

--  作者:有点甜
--  发布时间:2019/5/28 12:40:00
--  

 

控件属性->tab键顺序->改成20即可。反正,只要不是第一个即可。

 

 


--  作者:lur320
--  发布时间:2019/5/28 12:49:00
--  
搞定了,但是不知道为啥会这样。
--  作者:有点甜
--  发布时间:2019/5/28 15:52:00
--  
以下是引用lur320在2019/5/28 12:49:00的发言:
搞定了,但是不知道为啥会这样。

 

生成表格以后,焦点会重新回到你的主窗口的第一个控件,这个时候可能触发了click事件。

 

频繁多次重复生成表的时候,就可能报错。