以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  怎么样理解窗口停止绘制  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=138256)

--  作者:aidimeng
--  发布时间:2019/7/26 13:50:00
--  怎么样理解窗口停止绘制

开发中遇到一个问题,图片的 text 窗口在执行下面代码后 text控件的值不显示了
        Functions.Execute("写库",1)
        Vars("i") =Vars("pdqty1")
t.Text= Functions.Execute("提取结果",s)
        e.Form.StopRedraw()

图片点击可在新窗口打开查看此主题相关图片如下:qq截图20190726134630.png
图片点击可在新窗口打开查看

 

正常显示是这样


 


图片点击可在新窗口打开查看此主题相关图片如下:qq截图20190726134914.png
图片点击可在新窗口打开查看
[此贴子已经被作者于2019/7/26 13:52:31编辑过]

--  作者:有点蓝
--  发布时间:2019/7/26 14:11:00
--  
去掉这句代码:e.Form.StopRedraw()
--  作者:aidimeng
--  发布时间:2019/7/26 14:13:00
--  
想停止绘制窗口,但还想text上面有值
--  作者:有点蓝
--  发布时间:2019/7/26 14:32:00
--  
都停止绘制了,界面肯定无法变化啊,这不是矛盾么

何况StopRedraw和resumeRedraw是整对出现的,resumeRedraw之前界面都不会有任何变化

--  作者:aidimeng
--  发布时间:2019/7/29 8:23:00
--  

代码写在窗口的计时器里,每1000ms 读取一次串口数据,把串口数据赋值给text。想实现 在串口数据不变时 text不变在闪动。

 

Ports("COM1").Write(CHR(73))
Ports("COM1").Write(CHR(13))
Ports("COM1").Write(CHR(10))
\'Ports("COM1").Write("SI")
\'Ports("COM1").Write("CRLF")
Dim t As WinForm.TextBox = e.Form.Controls("t1")

 

 

Dim s As String=Ports("COM1").ReadExisting
t.Text= Functions.Execute("提取结果",s)

 

If s.Contains("S D")  Then
 \'e.Form.ResumeRedraw()
    t.BackColor= Color.Red
    Vars("i") =0
    \'vars("i")  =Functions.Execute("提取结果",s)
Else
   
    t.BackColor=Color.Gray

    

   
    Vars("pdqty1") = 0
    Vars("pdqty1") = CInt(t.Text)
    If Vars("i")<> Vars("pdqty1")
        Functions.Execute("写库",1)
        Vars("i") =Vars("pdqty1")
\'t.Text= Functions.Execute("提取结果",s)
        e.Form.StopRedraw()
    End If
End If

[此贴子已经被作者于2019/7/29 8:24:42编辑过]

--  作者:有点蓝
--  发布时间:2019/7/29 8:50:00
--  

Ports("COM1").Write(CHR(73))
Ports("COM1").Write(CHR(13))
Ports("COM1").Write(CHR(10))
\'Ports("COM1").Write("SI")
\'Ports("COM1").Write("CRLF")
Dim t As WinForm.TextBox = e.Form.Controls("t1")

 

 

Dim s As String=Ports("COM1").ReadExisting

dim jg as string = Functions.Execute("提取结果",s)

if jg = t.text then return \'如果结果和文本框内容一致就返回

t.Text= jg

If s.Contains("S D")  Then
    t.BackColor= Color.Red

Else
    t.BackColor=Color.Gray

end if

Functions.Execute("写库",1)


--  作者:aidimeng
--  发布时间:2019/7/29 8:55:00
--  
谢谢 我试试