发一个vb.net跨窗口操作button1_Click的实例吧。有单线程和多线程两种方法。

plum小梅 2015-06-02 08:46:06
加精


怎样才能跨窗体操作控件呢?这个在updateUI里是最常用到的东西了。
对于初学者,呵呵,可能有需要,但不知怎么搞。我也是学了很久。也就是一个 invoke, delegate的应用。工程文件在下面那个看上去像图片的文件里,改名就可以用了。

Imports System
Imports System.Threading
Imports System.Text


Public Class Form1
Private Delegate Sub voidDelegate()
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
CheckForIllegalCrossThreadCalls = False '不写这行,会出错,不允许线程的数据写到TextBox1.Text 中去。
Form2.Show()
End Sub
Private Sub form1_FormClosing(sender As Object, e As EventArgs) Handles Me.FormClosing
' If runThread.IsAlive = True Then runThread.Abort()
End Sub

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
'用的是委托方式
Me.Invoke(New voidDelegate(AddressOf THREAD2))
End Sub

Private Sub THREAD2()
Static j As Integer
j = j + 1
TextBox1.Text = " 这是 [线程] 操作" & vbCrLf & _
" Button2被点了: " & j & " 次" & vbCrLf & "要求是from2.textbox.text= textbox1.text 。[问题]但为什么不能成功显示呢?"
End Sub

Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
Form2.TextBox1.Text = TextBox1.Text
End Sub

Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click

Static j As Integer
j = j + 1
TextBox1.Text = " 这是 [非线程] 操作" & vbCrLf & _
"Button3 点击了: " & j & " 次" & vbCrLf & _
"要求是from2.textbox.text= textbox1.text, 可以成功显示,这个是对的。"
End Sub

End Class






这个是工程文件。我不知道怎样才能上传,就改了一下文件名。
...全文
2948 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
plum小梅 2019-06-19
  • 打赏
  • 举报
回复
外部程序也想有这样的功能? 这是高手。 试试内存里捞吧。
kekewf 2019-05-23
  • 打赏
  • 举报
回复
但是 如果是外部程序的窗口呢?
china_lzglm 2017-10-16
  • 打赏
  • 举报
回复
感谢楼主分享!
weixin_40482170 2017-10-08
  • 打赏
  • 举报
回复
新手提问,请问是不是要创建两个from.vb【设计】和两个from.vb,写两份代码,我全复制你的,但我还是出现了错误,我尝试看了看,但我看了几遍还是看不懂,新手的世界需要指点,谢谢
不甜不要钱了 2017-03-06
  • 打赏
  • 举报
回复
im战术 2016-11-21
  • 打赏
  • 举报
回复
因为做了个程序Load时要加载后台网页当明是放到线程里,窗口开起来,网页还没加载完.不同步了. 不放线程里直接的话要等网页加载完才能开起来,感觉像是卡卡的~再一想可以线程加Invoke委托发现又卡了变成同一线程了~ 说明Invoke是把两个线程合并成一个线程的东西
baidu_35152589 2016-05-29
  • 打赏
  • 举报
回复
感觉做着作者适合是个很严谨的人
Carldats 2016-02-22
  • 打赏
  • 举报
回复
委托和线程有什么区别?使用委托,不需要定义线程么?
子鸿 2015-06-19
  • 打赏
  • 举报
回复
正好最近在学这个,还没看,希望有帮助,谢谢楼主
kuankuan_qiao 2015-06-17
  • 打赏
  • 举报
回复
RLib 2015-06-15
  • 打赏
  • 举报
回复
配合匿名函数更加简洁
  • 打赏
  • 举报
回复
md_casper 2015-06-15
  • 打赏
  • 举报
回复
好用,谢谢了
408985552 2015-06-15
  • 打赏
  • 举报
回复
谢谢,分享.
  • 打赏
  • 举报
回复
好深奥,你们城里人真会玩
chadaobili 2015-06-14
  • 打赏
  • 举报
回复
尼玛死了,劳资要金币
plum小梅 2015-06-03
  • 打赏
  • 举报
回复
喔呜,这里可以下载哇,版主,你看看我的资源里。全是干货。 http://download.csdn.net/detail/plumlee/8766371
threenewbee 2015-06-02
  • 打赏
  • 举报
回复
在download.csdn.net,点我要上传,然后可以上传 贴出你的链接,给你推荐下。
plum小梅 2015-06-02
  • 打赏
  • 举报
回复


Imports System
Imports System.Threading
Imports System.Text


Public Class Form1
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
        CheckForIllegalCrossThreadCalls = False   '不写这行,会出错,不允许线程的数据写到TextBox1.Text 中去。
        Form2.Show()
    End Sub
    Private Sub form1_FormClosing(sender As Object, e As EventArgs) Handles Me.FormClosing
        ' If runThread.IsAlive = True Then runThread.Abort()
    End Sub

    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        '用的是委托方式
        Me.Invoke(New MethodInvoker(AddressOf THREAD2))      ‘这样更方便,不用delegate声明半句。
    End Sub

    Private Sub THREAD2()
        Static j As Integer
        j = j + 1
        TextBox1.Text = " 这是 [线程] 操作" & vbCrLf & _
            " Button2被点了: " & j & " 次" & vbCrLf & "要求是from2.textbox.text= textbox1.text 。[问题]但为什么不能成功显示呢?"
    End Sub

    Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
        Form2.TextBox1.Text = TextBox1.Text
    End Sub

    Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click

        Static j As Integer
        j = j + 1
        TextBox1.Text = " 这是 [非线程] 操作" & vbCrLf & _
            "Button3 点击了: " & j & " 次" & vbCrLf & _
            "要求是from2.textbox.text= textbox1.text, 可以成功显示,这个是对的。"
    End Sub

End Class



plum小梅 2015-06-02
  • 打赏
  • 举报
回复
我只是分享,也要给分的吗?

16,556

社区成员

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

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