再问怎么做带进度条窗口

ljlove99 2003-08-27 11:00:30
该怎么做带进度条窗口,最好说一下数据读完后怎么关闭进度条窗口
...全文
93 30 打赏 收藏 转发到动态 举报
写回复
用AI写文章
30 条回复
切换为时间正序
请发表友善的回复…
发表回复
YuriOU 2004-03-24
  • 打赏
  • 举报
回复
mark
ljlove99 2003-09-09
  • 打赏
  • 举报
回复
to: Brunhild()

谢谢!!今天去公司参考你的代码做了一下,实现了我的想法!!

其实我在VB6中只用Actived事件就实现了上述功能,但在vb.net没有实现!

我觉得vb6和vb.net最大区别就是:vb.net要比VB6写更多的代码!呵呵!!!
ljlove99 2003-09-08
  • 打赏
  • 举报
回复
sakurako(我演的是我) :

进度条窗口一激活就读取值,也就是在Actived事件中产生的代码,这样在vb.net不行,
因为只要一激活这窗口,就会进行导入数据,一值不停,你说的就和我做的一样了,行不通,在vb6中可以实现,vb中用的是Activing事件,在vb.net中没有这样的事件,只有actived事件。

to:xixigongzhu(夕夕公主)
timer控件放在主窗口中?但是还要做一个进度条窗口来显示进度呀!!!
ljlove99 2003-09-08
  • 打赏
  • 举报
回复
谢谢,收到!我明天到公司仔细研究一下,家里机子太破,运行太慢,明天答复我的情况!
Brunhild 2003-09-08
  • 打赏
  • 举报
回复
默认值100,其实多少都无所谓,只要不会让人觉得有明显的停顿就可以了。
ljlove99 2003-09-08
  • 打赏
  • 举报
回复
to :Brunhild()
很感谢贴出代码,我这几天正为这发愁!!
但有点我不是很明白,想问一下:

你的timer的interval是怎么取值的,因为这个要影响Timer1_tick事件!





Brunhild 2003-09-08
  • 打赏
  • 举报
回复
这是进程窗体FORM3的代码,上面有PROGRESSBAR1, LABEL1, TIMER1和BUTTON1,如果楼主需要在进程窗体中处理事务,可以将raiseevent语句改为调用事务语句。另外这是我在VB6时代的方法,如果有更好的方法请各位不吝赐教。

Public Event Working(ByVal Sender As Object, ByRef ok As Boolean)

Dim m_firsttime As Boolean = True
Dim m_cancel As Boolean
Dim m_ok As Boolean

Public Function Action() As Boolean
Me.ShowDialog()
Return m_ok
End Function

Public ReadOnly Property Cancel() As Boolean
Get
Return Me.m_cancel
End Get
End Property

Private Sub Form3_Activated(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Activated
If m_firsttime Then
m_firsttime = False
Timer1.Enabled = True
End If
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If MsgBox("取消吗?", MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then
Button1.Enabled = False
m_cancel = True
End If
End Sub

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Timer1.Enabled = False
RaiseEvent Working(Me, m_ok)
Me.Close()
End Sub
Brunhild 2003-09-08
  • 打赏
  • 举报
回复
抱歉,这两天去旅游了,现在帖出代码:
这个是主窗体FORM1上的调用和处理代码:
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim f3 As New Form3()
AddHandler f3.Working, AddressOf Me.Working
MsgBox(f3.Action())
f3.Dispose()
End Sub

Private Sub Working(ByVal Sender As Object, ByRef ok As Boolean)
Dim f3 As Form3 = DirectCast(Sender, Form3)
Dim errmsg As String = ""
ok = True

With f3
ok = True

Try
Dim r As New Random()
Dim i As Integer, j As Integer

For i = 1 To 100
For j = 1 To 5000000
Next

If r.NextDouble < 0.005 Then
Throw New System.Exception("发生预设错误")
End If

.ProgressBar1.Value = i
.Label1.Text = "已完成" & i & "%"

Application.DoEvents()

If .Cancel Then
Exit For
End If
Next
Catch ex As System.Exception
ok = False
errmsg = ex.Message
End Try
ok = Not (.Cancel) And ok

If ok Then
MsgBox("成功", MsgBoxStyle.Information)
ElseIf .Cancel Then
MsgBox("取消", MsgBoxStyle.Exclamation)
Else
MsgBox(errmsg, MsgBoxStyle.Critical)
End If

.Close()
End With

End Sub
sakurako 2003-09-07
  • 打赏
  • 举报
回复
我也是新手
看看我想的能不能实现
设置一个全局变量
每读入一条数据 全局变量加一个值

当进度条窗口 激活 时 进度条读取这个数值
fankun 2003-09-07
  • 打赏
  • 举报
回复
快点UP,支持楼主!
xixigongzhu 2003-09-05
  • 打赏
  • 举报
回复
放在主窗口,什么时候开始连接数据库,就什么时候开始进程条。
GetWindowPos 2003-09-04
  • 打赏
  • 举报
回复
写进度条,最重要的是获得当前的进度数据,假如是复制文件的话,你要获得当前已复制了多少容量的文件,再根据已复制和总共要复制的做个百分比计算,得出来差值用进度条表现
如果是写网络程序,用来发文件的话,那就取得当前已发送的文件容量和总共有发多少容量。

同样的,写数据导入你要先获得你总共要导入多少,再获取你当前导了多少,用这两者取得一个百分比的数后,就用TIMER控件来控制进度条而不是什么ACTIVE事件,这样的话就算你点击什么窗口,进度条永远是根据当前已导入的数据来变化,如果你想看我做的进度条可以到

http://soec.myrice.com/1.bmp
这是我用来应用在网络上的一个进度条
没有用任用控件,全部是代码
ljlove99 2003-09-04
  • 打赏
  • 举报
回复
to: GetWindowPos(阿汪)
http://soec.myrice.com/1.bmp 我看了,能给我再讲讲吗!!

你说用timer控件,那也得有窗口来放置控件啊!那么要控制这个控件,也得要要在事件中编
代码来控制吧,那就说说在那个事件中编写来控制进度!!

最好有关键代码!!很感谢!!


LongBow007 2003-09-04
  • 打赏
  • 举报
回复
up
xixigongzhu 2003-09-04
  • 打赏
  • 举报
回复
在放进度条控件的窗口中写个方法来编写的进度条值的变化,然后在导入数据的同时调用这个方法。
Brunhild 2003-09-03
  • 打赏
  • 举报
回复
to: GetWindowPos(阿汪)
你误会了,我只不过是觉得整个代码发出去比只贴些片段更容易让人看得明白。不知道你能否将你的代码发给我,帖出来或提供个思路都可以。

email:cgpcgs@pub.guangzhou.gd.cn
fankun 2003-09-03
  • 打赏
  • 举报
回复
老兄,有进度条控件啊
自动关闭,你就选择有进度条的窗口关闭啊,并把进度条放在启动窗体上啊,启动窗体不要设为主窗体,就行啦
ljlove99 2003-09-03
  • 打赏
  • 举报
回复
很感谢大家说了这么多,但关键是要解决这个问题!!

我再说说我遇到的问题:
我现在要做一个数据导入到数据库中的功能,在数据导入过程中,就要用到进度条窗口。
我是这样编的:我把进度条控件放在一个窗口中,这个窗口不能变化大小,不带菜单,我
是在这个窗口的Actived事件中编写的进度条值的变化,每导如一条数据进度条的值就增大
一个,但我遇到这样一个问题:如果在进度条的值前进的时候点击了其他程序的窗口,再来点击本程序的话,进度条就会有被重新开(也就是说这个进度条窗口会又被激活Actived事件中的代码).我的问题就是出在这里。我用VB6就没发生这种情况,进度条前进时,如点击了其他程序后再回来点击本程序,进度条不会重新开始,而是继续在前进!!

to:Brunhild() 你只要帖一些关键代码就行了,不一定非要全贴!!

to:GetWindowPos(阿汪) 你说做了很多,那就说说该怎么解决这个问题!

to: fankun(虾虾) 你说的这些我都知道,但是没能解决问题,也许是我笨,希望能说仔细一些!

望答复!!
GetWindowPos 2003-09-03
  • 打赏
  • 举报
回复
有无搞错,只不过是个进度功能,居然把它当宝,还要留下EMAIL才能收到,我自己做的好多了!
Angelnet 2003-09-03
  • 打赏
  • 举报
回复
Longsea168@163.com
加载更多回复(10)

16,554

社区成员

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

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