父窗体无法显示ProgressBar

lwl0606 2008-07-29 09:13:00
父窗体的 isMDIContainer=true
父窗体上有一个StatusStrip1 ,StatusStrip1上有一个ToolStripProgressBar1,
子窗体上有一个 导出数据到 Excel的功能,调用的是一个SUB,在这个SUB里面我想让导出的进度显示在ToolStripProgressBar1上,不知道什么原因显示不了
但是如果是 父窗体 导出数据 调用SUB 却能显示在ToolStripProgressBar1
高手帮忙,如何让子窗体的进度显示在父窗体的ToolStripProgressBar1上??
...全文
107 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
tangweikai 2008-07-29
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 lwl0606 的回复:]
Application.DoEvents() 还是不性,
5楼的我没搞明白什么意识,我是在子窗体中有一个 Button,执行ExportExcel导出EXCEL,让导出进度显示在父窗体的
ToolStripProgressBar1 上
[/Quote]
你要实现的不就是在子窗体的sub()中实现对父窗体的 ToolStripProgressBar1.Value = rowIndex的设置嘛!

这段代码就是这个意思,在子窗体中保存一个父窗体的 ToolStripProgressBar1 的指针,通过个这个指针访问父窗体的 ToolStripProgressBar1的,这样就可以在父窗体动态显示进度了..
lwl0606 2008-07-29
  • 打赏
  • 举报
回复
这有两个网页
http://blog.csdn.net/knight94/archive/2006/05/27/757351.aspx

http://topic.csdn.net/u/20080618/21/c60eb651-e62d-4522-8254-7162c6337fcd.html?1160968925

看不大懂。

能看懂的帮忙用VB.NET解决一下
lwl0606 2008-07-29
  • 打赏
  • 举报
回复
Application.DoEvents() 还是不性,
5楼的我没搞明白什么意识,我是在子窗体中有一个 Button,执行ExportExcel导出EXCEL,让导出进度显示在父窗体的
ToolStripProgressBar1 上
yanlongwuhui 2008-07-29
  • 打赏
  • 举报
回复
试试在Me.tsProgressBar1.Value = rowIndex的后面加一句:Application.DoEvents()
tangweikai 2008-07-29
  • 打赏
  • 举报
回复

调用子窗体时,就不能使用Me.tsProgressBar1:可参考如下代码:

父窗体调用窗体时用:
dim childForm as new childForm
childForm.ParentProcessBar= me.tsProgressBar1 'ParentProcessBar是定义的一个ProgressBar类型变量
childForm.show()

在子窗体中执行sub时使用:
Public Sub ExportExcel(ByVal daTable As DataTable)
Me.ParentProcessBar.Visible = True
...
Me.ParentProcessBar.Value = rowIndex
...
...
end sub

lwl0606 2008-07-29
  • 打赏
  • 举报
回复
环境 VB.NET 2005
lwl0606 2008-07-29
  • 打赏
  • 举报
回复

Public Sub ExportExcel(ByVal daTable As DataTable)
Me.tsProgressBar1.Visible = True

Dim xlApp As New Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet
Dim rowIndex, colIndex As Integer
rowIndex = 1
colIndex = 0
xlBook = xlApp.Workbooks().Add
xlSheet = xlBook.Worksheets("sheet1")
Dim Table As New DataTable
Table = daTable
'将所得到的表的列名,赋值给单元格
Dim Col As DataColumn
Dim col1 As DataColumn
Dim Row As DataRow
For Each Col In Table.Columns
colIndex = colIndex + 1
xlApp.Cells(1, colIndex) = Col.ColumnName
Next
'得到的表所有行(, 赋值给单元格)

For Each Row In Table.Rows
rowIndex = rowIndex + 1
colIndex = 0
For Each col1 In Table.Columns
colIndex = colIndex + 1
xlApp.Cells(rowIndex, colIndex) = Row(col1.ColumnName)
Next

Me.tsProgressBar1.Minimum = 1
Me.tsProgressBar1.Maximum = Table.Rows.Count + 1
Me.tsProgressBar1.Value = rowIndex

Next
With xlSheet
.Range(.Cells(1, 1), .Cells(1, colIndex)).Font.Bold = True
End With
xlApp.Visible = True
Me.tsProgressBar1.Visible = False

End Sub


这个SUB 是在父窗体的类里面
yanlongwuhui 2008-07-29
  • 打赏
  • 举报
回复
SUB中的代码贴上来
  • 打赏
  • 举报
回复
帮你顶
tangweikai 2008-07-29
  • 打赏
  • 举报
回复
放在Module,声明在 public 类型,就可以在项目的任何地方使用这个sub()方法的..
lwl0606 2008-07-29
  • 打赏
  • 举报
回复
多谢tangweikai ,可以显示了
ExportExcel SUB 必须放在子窗体的类中吗?
能不能放在Module 或 父窗体中? 我有两个子窗体都是执行这同一个SUB

16,554

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧