请看下面代码:
i = 0
Do While i < RsN
frmMessage.Show
frmMessage.txtMessage.Text = RsMess(i + 1)
i = i + 1
Loop
我要实现的是在弹出的窗体中显示信息,如信息有多个,则弹出多个窗口,分别显示信息。但我这段代码,只是第二个信息将第一个信息覆盖了,并没有另外弹出窗体显示。
请各位高手赐教,小女子不胜感激,一旦解决,定高分奉送!
i = 0
Do While i < RsN
frmMessage.Show
frmMessage.txtMessage.Text = RsMess(i + 1)
i = i + 1
Loop
我要实现的是在弹出的窗体中显示信息,如信息有多个,则弹出多个窗口,分别显示信息。但我这段代码,只是第二个信息将第一个信息覆盖了,并没有另外弹出窗体显示。
请各位高手赐教,小女子不胜感激,一旦解决,定高分奉送!
你可以采用以下方法:
1. form show了以后再用move方法
根据form的width/height/个数来计算其left/top
但是这样做,用户需要关闭很多个窗口,并不建议
2. 用一个form显示所以需要显示的信息
这个就需要看你的需求是否允许这样做了
i=0
do while i<RsN
redim preserve fMessage(0 to i)
set fMessage(i)=new frmMessage
fMessage(i).Show
fMessage(i).txtMessage.Text = RsMess(i + 1)
i=i+1
Loop
不然Show的一直是刚才的那个Form
具体参照 gcj123 的方法
但是这样会打开很多form.并不建议这样做
先设计一个TextBox设置index(好象是)为0
以后load txtName(i)就可以了
Private Sub MessageShow()
Dim strSqlM As String, strSqlM1 As String
Dim RsN As Integer, i As Integer
strSqlM = "select reci_name,message from t_message where reci_name='" + UserName + "' and reci_flag='0'"
adoRsM.Open strSqlM, adoConn, adOpenKeyset, adLockOptimistic
RsN = 0
Do While (Not adoRsM.EOF) And (RsN < 100)
RsN = RsN + 1
RsMess(RsN) = adoRsM(1)
adoRsM.MoveNext
Loop
adoRsM.Close
i = 0
Do While i < RsN
frmMessage.Show
If i > 0 Then
Load frmMessage.txtMessage(i)
End If
frmMessage.txtMessage(i).Text = RsMess(i + 1)
If i > 0 Then frmMessage.txtMessage(i).Top = frmMessage.txtMessage(i - 1).Top + 200
i = i + 1
Loop
End Sub
===============
你每次show的都是同一个frmMessage,当然要覆盖了,你应该在for next 循环里面每次生成一个新的frmMessage对象,应该就没有问题。