以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  动态增加表控件  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=72746)

--  作者:无限5180
--  发布时间:2015/8/5 15:25:00
--  动态增加表控件

图片点击可在新窗口打开查看 

        Dim tb As WinForm.Table
        tb = e.Form.CreateTable("Table3","全表",True)
        tb.SetBounds(10,20,580, 200)
        e.Form.Controls("统计2").AddControl(tb)
        tb.Dock = 5
        tb.width=  tb.Parent.width
        tb.Height =  tb.Parent.Height

用button控件 click事件进行动态添加表,第一次点击没问题再次点击就会出现错误,显示:“已添加了具有相同键的项”,请问如何设置代码
       

[此贴子已经被作者于2015/8/5 15:33:49编辑过]

--  作者:有点蓝
--  发布时间:2015/8/5 15:31:00
--  
再次点击按钮的时候要把之前的控件删除啊,要不然冲突了
--  作者:大红袍
--  发布时间:2015/8/5 15:33:00
--  

If e.Form.Controls.Contains("Table3") Then
    Dim tb As Table = e.Form.Controls("table3").Table
    tb.datasource = DataTables("全表")
Else
    Dim tb As WinForm.Table
    tb = e.Form.CreateTable("Table3","全表",True)
    tb.SetBounds(10,20,580, 200)
    e.Form.Controls("统计2").AddControl(tb)
    tb.Dock = 5
    tb.width=  tb.Parent.width
    tb.Height =  tb.Parent.Height
End If


--  作者:无限5180
--  发布时间:2015/8/5 15:35:00
--  

谢谢

 


--  作者:大红袍
--  发布时间:2015/8/5 15:35:00
--  

或者Remove掉

 

If e.Form.Controls.Contains("Table3") Then
    e.Form.Controls("统计2").RemoveControl("Table3")
End If

Dim tb As WinForm.Table
tb = e.Form.CreateTable("Table3","全表",True)
tb.SetBounds(10,20,580, 200)
e.Form.Controls("统计2").AddControl(tb)
tb.Dock = 5
tb.width=  tb.Parent.width
tb.Height =  tb.Parent.Height

[此贴子已经被作者于2015/8/5 16:22:02编辑过]

--  作者:无限5180
--  发布时间:2015/8/5 15:36:00
--  
两个方法试过了,还是不行啊,显示的错误仍是:“添加了具有相同键的项”
[此贴子已经被作者于2015/8/5 15:38:37编辑过]

--  作者:逛逛
--  发布时间:2015/8/5 15:45:00
--  

还是设一个全局计数变量吧


--  作者:大红袍
--  发布时间:2015/8/5 16:19:00
--  

下面的代码我测试了一下,没有问题

 

If e.Form.Controls.Contains("Table9") Then
    Dim tb As Table = e.Form.Controls("table9").Table
    tb.datasource = DataTables("表A")
Else
    Dim tb As WinForm.Table
    tb = e.Form.CreateTable("Table9","表A",True)
    tb.SetBounds(10,20,580, 200)
    e.Form.AddControl(tb)
    \'tb.Dock = 5
    \'tb.width=  tb.Parent.width
    \'tb.Height =  tb.Parent.Height
End If


--  作者:大红袍
--  发布时间:2015/8/5 16:22:00
--  

这样也行

 

If e.Form.Controls.Contains("Table10") Then
    e.Form.RemoveControl("table10")
End If

Dim tb As WinForm.Table
tb = e.Form.CreateTable("Table10","表A",True)
tb.SetBounds(10,20,580, 200)
e.Form.AddControl(tb)