vb.net窗口間通信,vbnet窗體數(shù)據(jù)如何交互

用vb.net實(shí)現(xiàn)網(wǎng)絡(luò)通信

用 vb.net socket通信

創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供汕尾網(wǎng)站建設(shè)、汕尾做網(wǎng)站、汕尾網(wǎng)站設(shè)計(jì)、汕尾網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)與制作、汕尾企業(yè)網(wǎng)站模板建站服務(wù),十余年汕尾做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。

Dim th As Threading.Thread

2 Dim tcpl As System.Net.Sockets.TcpListener

3

4 Private Sub Form1_Load()Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

5 th = New System.Threading.Thread(New System.Threading.ThreadStart(AddressOf MyListen))

6 th.Start()

7 End Sub

8

9 Public Sub SendMessage()Sub SendMessage(ByVal IP As String, ByVal SendMsg As String)

10 Try

11 If IP "" Then

12 Dim tcpc As New System.Net.Sockets.TcpClient(IP, 5656)

13 Dim tcpStream As Net.Sockets.NetworkStream = tcpc.GetStream

14 Dim reqStream As New IO.StreamWriter(tcpStream)

15 reqStream.Write(SendMsg)

16 reqStream.Flush()

17 tcpStream.Close()

18 tcpc.Close()

19 End If

20 Catch ex As Exception

21 MsgBox(ex.Message.ToString)

22 End Try

23 End Sub

24 Private Sub MyListen()Sub MyListen()

25 Try

26 Dim ipAddress As System.Net.IPAddress = System.Net.Dns.Resolve(System.Net.Dns.GetHostName).AddressList(0)

27 tcpl = New System.Net.Sockets.TcpListener(ipAddress, 5656)

28 tcpl.Start()

29 While True

30 Dim s As System.Net.Sockets.Socket = tcpl.AcceptSocket()

31 Dim MyBuffer(1024) As Byte

32 Dim i As Integer

33 i = s.Receive(MyBuffer)

34 If i 0 Then

35 Dim lstrRec As String

36 Dim j As Integer

37 For j = 0 To i - 1

38 TextBox1.Text += Chr(MyBuffer(j)) ","

39 Next

40 End If

41 End While

42 Catch ex As Exception

43 MsgBox(ex.Message.ToString)

44 End Try

45 End Sub

46

47 Private Sub Button1_Click()Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

48 SendMessage("192.168.0.61", TextBox2.Text)

49 End Sub

VB與VB.NET串口及以太網(wǎng)通迅

關(guān)于串口通訊的問(wèn)題:

很明顯,你還不知道(不會(huì)、不習(xí)慣)使用事件驅(qū)動(dòng)的方式接收數(shù)據(jù)。

建議你仔細(xì)看看串口組件(無(wú)論VB6還是VB.net)的OnComm事件,你的問(wèn)題很容易解決。

關(guān)于以太網(wǎng)通訊:

在TCP通訊中端口確實(shí)可以重用,你百度一下“TCP端口重用”能查到很多示例。

但絕大多數(shù)情況下不推薦端口重用,而應(yīng)該采取服務(wù)器端建立連接池的方法。

或者,干脆不用TCP,用UDP解決也可以。

VB.net 兩個(gè)窗體之間傳遞參數(shù)

新窗體中寫(xiě)

構(gòu)造函數(shù)

,然后調(diào)用。

比如你要調(diào)用的新窗體是From1.cs這個(gè)窗體,

public

Form1(要傳入的參數(shù))

{

//把傳入的參數(shù)傳入窗體中

//執(zhí)行窗體標(biāo)準(zhǔn)內(nèi)容

}

然后在需要調(diào)用的地方調(diào)用

Form1

f

=

new

Form1(傳出的參數(shù));

'--------Form1--------

Dim

f2

As

Form2

Private

Sub

Command1_Click()

Set

f2

=

New

Form2

f2.Show

vbModal

End

Sub

'--------Form1

End--------

'--------Form2--------

Dim

WithEvents

f3

As

Form3

Private

Sub

Command1_Click()

Set

f3

=

New

Form3

f3.Show

End

Sub

Public

Sub

f3_f2W()

Me.Command1.Caption

=

"f2W"

End

Sub

'--------Form2

End--------

'--------Form3--------

Public

Event

f2W()

Private

Sub

Command1_Click()

RaiseEvent

f2W

End

Sub

'--------Form3

End--------

f.Show();

如此就能實(shí)現(xiàn)調(diào)用了。

請(qǐng)教一個(gè)vb.net的窗口之間傳遞變量值的問(wèn)題

用form的ShowDialog這個(gè)功能,這個(gè)是可以進(jìn)行窗體間的傳值的。

比如在父窗體上需要傳的值是textbox1的內(nèi)容,子窗體是childform.

那么在父窗體上的點(diǎn)擊事件中可以這樣寫(xiě)

dim frm as childform = New childform

'要在子窗體上的textbox1里顯示父窗體中的textbox1中的內(nèi)容,這樣寫(xiě)

frm.textbox1.text = me.textbox1.text

'最后

frm.showdialog()

這樣就可以了。

如果說(shuō)你三個(gè)窗體完全一樣,那你也不用寫(xiě)三個(gè)一樣的窗體只要寫(xiě)一個(gè)就行了,在不同的按鈕事件中做不同的賦值即可。

不過(guò)這樣打開(kāi)的子窗體是模態(tài)窗體,也就是說(shuō)在子窗體顯示之后,要對(duì)父窗體進(jìn)行操作必需關(guān)閉子窗體才行。

VB.NET窗體間的數(shù)據(jù)傳遞

在編寫(xiě)VB.Net windows應(yīng)用程序的時(shí)候我們經(jīng)常會(huì)遇到這種問(wèn)題,怎么樣在兩個(gè)窗體間傳遞數(shù)據(jù)呢?例如,用VB.Net做一個(gè)文本編輯器,里面有一個(gè)搜索功能(即搜索我打開(kāi)的文本里面的文字),點(diǎn)搜索則彈出搜索對(duì)話框,輸入要搜索的內(nèi)容,然后確定,就可以搜索到我打開(kāi)的文本里面的文字了,這里就用到了兩個(gè)窗體間的相互通信。我查看了相關(guān)的資料想了想,得出一些想法和方法。

也許有的人會(huì)覺(jué)得這個(gè)很簡(jiǎn)單呀。假如主框架為Form1,打開(kāi)的搜索對(duì)話框是Form2.直接在Form2類中申明一個(gè)Form1實(shí)例:dim f1 as new Form1然后就可以通過(guò)f1來(lái)調(diào)用Form1中的域和函數(shù)了。其實(shí)不是這樣的,你申明的新的Form1實(shí)例不是原來(lái)的那個(gè)Form1對(duì)象了,這樣操作的是新的Form1中的域和函數(shù),和最先打開(kāi)的Form1是沒(méi)有關(guān)系的。

那應(yīng)該如何來(lái)完成兩個(gè)窗體的通訊呢?我們要做的是把當(dāng)前的Form1實(shí)例傳遞給Form2,如果是這樣的話,問(wèn)題就很好解決了。

方法1:首先,我們?cè)贔orm2中定義:

Private mF_Form As Form1

我們更改Form2的構(gòu)造函數(shù)為有參數(shù)的

Public Sub New(ByVal form As Form1)

MyBase.New()

'該調(diào)用是 Windows 窗體設(shè)計(jì)器所必需的。

InitializeComponent()

Me.mF_Form = form

'在 InitializeComponent() 調(diào)用之后添加任何初始化

End Sub

在Form1中,我在 要用到Form2的地方申明如下:

Dim f1 As New Form2(Me)

這里的me指的就是Form1當(dāng)前的實(shí)例,也就是把當(dāng)前Form1的實(shí)例通過(guò)Form2的構(gòu)造函數(shù)傳遞給Form2類(其實(shí)在網(wǎng)上看到過(guò)比較蠢的方式,就是在構(gòu)造函數(shù)里面?zhèn)鬟f要傳遞的信息如:字符串或是數(shù)字等,這樣做很有局限性,不能傳遞其他的,所有我們可以直接傳遞實(shí)例,來(lái)完成傳遞更多的信息。)

這樣在Form2中使用myForm 就可以對(duì)原來(lái)的Form1窗口進(jìn)行操作了。但是你要把要操作的Form1中的域和函數(shù)定義成public形式的(這樣可能不安全),此時(shí)的myForm就是真正的最開(kāi)始打開(kāi)的Form1了,你可以用這個(gè)實(shí)例來(lái)進(jìn)行兩個(gè)窗體的通訊了。

方法2:其實(shí)VB.Net中提供了窗體間進(jìn)行通訊的現(xiàn)成的屬性,呵呵,我們能想到的,微軟也想到了,他們創(chuàng)造的語(yǔ)言其實(shí)確實(shí)可以說(shuō)是人性化了。

在Form1類中申明Form2時(shí)用如下代碼:

Dim f2As New Form2 '類Form2中的構(gòu)造函數(shù)不改,還是無(wú)參的

f2.owner=me

也可以使用函數(shù)的方法,給當(dāng)前實(shí)例添加一個(gè)附屬窗口 代碼:Me.AddOwnedForm(f2)

在Form2類的定義中寫(xiě)如下代碼:

dim f1 as Form1=me.owner

這樣f1對(duì)應(yīng)的就是原來(lái)的Form1的實(shí)例了,也就可以用這個(gè)進(jìn)行通訊了。但是還是要把不同類之間訪問(wèn)的域和函數(shù)定義成public,哎,安全確實(shí)是一個(gè)問(wèn)題!!

VB.NET在不同窗體之間傳遞參數(shù)有哪幾種方法

利用全局變量

利用控件屬性

在vb.net中兩個(gè)窗體間的變量可以相互引用了

例如:可以這樣用

Public Class Form1

Public asd As Integer

Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load

? asd = 123

End Sub

End Class

Public Class Form2

Private Sub Form2_Click(sender As Object, e As System.EventArgs) Handles Me.Click

? TextBox1.Text = Form1.asd

End Sub

End Class

網(wǎng)站欄目:vb.net窗口間通信,vbnet窗體數(shù)據(jù)如何交互
當(dāng)前鏈接:http://muchs.cn/article2/hcgoic.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版、網(wǎng)站營(yíng)銷、網(wǎng)站建設(shè)、小程序開(kāi)發(fā)外貿(mào)建站、網(wǎng)站策劃

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁(yè)設(shè)計(jì)公司