Foxtable(狐表)用户栏目专家坐堂 → [求助]加载表后为什么非要重新打开一次窗口才能发挥作用?


  共有3150人关注过本帖树形打印复制链接

主题:[求助]加载表后为什么非要重新打开一次窗口才能发挥作用?

帅哥哟,离线,有人找我吗?
新福星
  1楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1964 积分:15604 威望:0 精华:0 注册:2011/7/16 20:59:00
[求助]加载表后为什么非要重新打开一次窗口才能发挥作用?  发帖心情 Post By:2017/6/27 9:48:00 [只看该作者]

一个窗口涉及到 "角色"和"角色分配"两个表,系统打开时没有加载。

在这个窗口的AfterLoad事件中加入如下语句:

Dim zz() As String={"角色","角色分配"}
For Each x As String In zz
    If DataTables.Contains(x) = False Then '如果表C没有加载
        DataTables.Load(x) '加载表C
    End If
Next

这时打开的窗口时没有出错,但是角色表中的所有列没有展开,这是为什么?
再打开一次就好了!谢谢

[此贴子已经被作者于2017/6/27 9:48:18编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110443 积分:562081 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/6/27 10:26:00 [只看该作者]

必须在窗口打开前进行加载

 回到顶部
帅哥哟,离线,有人找我吗?
有点色
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/6/27 11:16:00 [只看该作者]

 方法一:打开窗口前加载;

 

 方法二:打开窗口两次,第一次打开加载表,然后重新打开一次。


 回到顶部
帅哥哟,离线,有人找我吗?
新福星
  4楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1964 积分:15604 威望:0 精华:0 注册:2011/7/16 20:59:00
  发帖心情 Post By:2017/6/27 14:01:00 [只看该作者]

方法一有效;方法二无效,第二次打开时会报错,请这个表已经加载了!

 回到顶部
帅哥哟,离线,有人找我吗?
有点色
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/6/27 15:36:00 [只看该作者]

以下是引用新福星在2017/6/27 14:01:00的发言:
方法一有效;方法二无效,第二次打开时会报错,请这个表已经加载了!

 

方法二:你afterLoad事件的代码怎么写的?

 

 

[此贴子已经被作者于2017/6/27 15:37:32编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点色
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/6/27 15:40:00 [只看该作者]

方法二:AfterLoad事件

 

If DataTables.Contains("表A") = False Then
    DataTables.Load("表A")
    e.Form.Visible = False
    e.Form.close
    e.Form.Show
    'basemainform.AddOwnedForm(e.Form.BaseForm)
End If


 回到顶部
帅哥哟,离线,有人找我吗?
kaituozhe
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2236 积分:15335 威望:0 精华:0 注册:2015/7/18 10:10:00
  发帖心情 Post By:2017/11/26 12:04:00 [只看该作者]

我是用以下代码打开窗口的,按6楼的方法修改,需要怎么修改

If e.Node.Level = 1 Then
    Dim tab As WinForm.TabControl = e.Form.Controls("TabControl1")
    If tab.TabPages(e.Node.Text) IsNot Nothing Then
        tab.SelectedPage = tab.TabPages(e.Node.Text)
    Else
        Dim Name As String = e.Node.Text
        tab.TabPages.Add(name,name)
        Dim pb = tab.BaseControl
        Forms(Name).OPEN(-1000,-1500)
        Forms(Name).BaseForm.TopLevel = False
        Forms(Name).BaseForm.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None
        Forms(Name).BaseForm.Dock = System.Windows.Forms.DockStyle.Fill
        PB.TabPages(name).Controls.Clear
        PB.TabPages(name).Controls.add(Forms(Name).BaseForm)
        tab.SelectedPage = tab.TabPages(name)
        vars("父tab") = tab
    End If
End If


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/11/26 16:25:00 [只看该作者]

无法在AfterLoad事件处理,必须在你打开窗口之前把表格加载出来,才行。

 回到顶部
帅哥哟,离线,有人找我吗?
kaituozhe
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2236 积分:15335 威望:0 精华:0 注册:2015/7/18 10:10:00
  发帖心情 Post By:2017/11/26 16:54:00 [只看该作者]

由于每个窗口中所加载的表是不一样的,没有法写代码实现先加载后打开窗口,要想实现6楼的目的,只能先打开窗口再关闭再打开窗口了,是这样吗?


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/11/26 18:14:00 [只看该作者]

以下是引用kaituozhe在2017/11/26 16:54:00的发言:

由于每个窗口中所加载的表是不一样的,没有法写代码实现先加载后打开窗口,要想实现6楼的目的,只能先打开窗口再关闭再打开窗口了,是这样吗?

 

你目前这个功能,只能先加载表,再打开窗口。


 回到顶部