Foxtable(狐表)用户栏目专家坐堂 → [求助]在SelectedIndexChanging事件中设置代码,当关闭窗口按钮时报错。


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

主题:[求助]在SelectedIndexChanging事件中设置代码,当关闭窗口按钮时报错。

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


加好友 发短信
等级:小狐 帖子:360 积分:3174 威望:0 精华:1 注册:2011/4/20 1:40:00
[求助]在SelectedIndexChanging事件中设置代码,当关闭窗口按钮时报错。  发帖心情 Post By:2012/7/6 16:25:00 [只看该作者]

在窗口中的"TabControl"的SelectedIndexChanging事件中,设置了如下代码:

'''
Dim 行政管理 As WinForm.TabControl = e.Form.Controls("TabControl_行政管理")

Select Case 行政管理.SelectedPage.name '返回页面标题
Case "行政管理"
   
Case "考勤对象"
    Dim tbl As Table = Tables("主界面_Table_考勤对象表")
    If tbl.DataTable.HasChanges Then '如果表格有修改
        Dim Result As DialogResult
        Result = MessageBox.Show("《考勤对象表》已修改!" & chr(13) & "您是否需保存?", "保存提示?", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
        If Result = DialogResult.Yes Then
            tbl.DataTable.Save() '保存
            MessageBox.Show("保存成功!","操作成功提示!")
        Else
            tbl.DataTable.RejectChanges() '撤消
            MessageBox.Show("撤消成功!","操作成功提示!")
        End If
    End If

Case "考勤参数"
   
Case "考勤数据"
   
Case "考勤记录"
   
Case "考勤报表"
   
Case Else
   
End Select

 

 

都可以正常使用,目的是想切换页面时检测如果有数据修改就提示是否进行修改。

但是当在关闭窗口时,切报错:

 

 

 


此主题相关图片如下:出错.png
按此在新窗口浏览图片

请问该怎么修改,哪里出错,经检测,红色的字体没有问题,变成注释后也仍然报错。


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


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2012/7/6 16:38:00 [只看该作者]

除掉红色,也没有代码了,用例子说话。


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


加好友 发短信
等级:小狐 帖子:360 积分:3174 威望:0 精华:1 注册:2011/4/20 1:40:00
  发帖心情 Post By:2012/7/6 17:06:00 [只看该作者]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:出错提问.table

打开项目----表A----项目管理----窗口管理----主界面----应用-----行政管理----考勤对象----随便输入内容----切换到其它页面-----弹出提示----关闭窗口-----报错。


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


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2012/7/6 17:48:00 [只看该作者]

Dim 行政管理 As WinForm.TabControl = e.Form.Controls("TabControl_行政管理")
If 行政管理.SelectedPage Is Nothing Then
    Return
End If

'其他代码


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


加好友 发短信
等级:小狐 帖子:360 积分:3174 威望:0 精华:1 注册:2011/4/20 1:40:00
  发帖心情 Post By:2012/7/6 22:23:00 [只看该作者]

孤爸,OK了,虽然不清楚具体为什么会这样,但估计是因为关闭窗口时没有检测到新页面才会这样吧。所以加了一个判断。

还有另外一个问题,假如我想实现,在加载窗口后,在加载窗体事件AfterLoad中设置:

'''
Dim 人事管理 As WinForm.TabControl = e.Form.Controls("TabControl_人事管理")
Dim 行政管理 As WinForm.TabControl = e.Form.Controls("TabControl_行政管理")
Dim 财务管理 As WinForm.TabControl = e.Form.Controls("TabControl_财务管理")


'-----人事管理初始化模块----
For a As Integer = 0 To 人事管理.TabPages.count - 1
    If 人事管理.TabPages(a).name <> "人事管理" '不是主界面时执行
        人事管理.TabPages(a).Visible = False '隐藏
    End If
Next

'-----人事管理初始化模块----
For b As Integer = 0 To 行政管理.TabPages.count - 1
    If 行政管理.TabPages(b).name <> "行政管理 " '不是主界面时执行
        行政管理.TabPages(b).Visible = False '隐藏
    End If
Next

'-----人事管理初始化模块----
For c As Integer = 0 To 财务管理.TabPages.count - 1
    If 财务管理.TabPages(c).name <> "人事管理" '不是主界面时执行
        财务管理.TabPages(c).Visible = False '隐藏
    End If
Next

 

 

目的是想在打开窗口后只显示出TabControl_人事管理、TabControl_行政管理、TabControl_财务管理三个页面集合的主页面,其它的页面隐藏掉。

 

 

可是当不加以上代码时可以通过选择导航栏来选择TabControl_人事管理、TabControl_行政管理、TabControl_财务管理三个模块显示,加了代码后导航栏的按钮却直不了作用了。

 

 

 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:出错提问(启用afterload代码后).table


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


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2012/7/7 8:16:00 [只看该作者]

大概如此,细节自行调整:

 

'''
Dim 人事管理 As WinForm.TabControl = e.Form.Controls("TabControl_人事管理")
Dim 行政管理 As WinForm.TabControl = e.Form.Controls("TabControl_行政管理")
Dim 财务管理 As WinForm.TabControl = e.Form.Controls("TabControl_财务管理")
人事管理.Visible= (e.Sender.SelectedPage.Butt)
行政管理.Visible= (e.Sender.SelectedPage.Butt)
财务管理.Visible= (e.Sender.SelectedPage.Butt)


 回到顶部