vb.netowner的簡單介紹

vb.net 窗體之間怎么傳值

方法很多,vb.net很簡單的比如: Form2窗體的Textbox2屬性設置為public,在Form1點擊button1.

創(chuàng)新互聯(lián)建站專注于伊川網(wǎng)站建設服務及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供伊川營銷型網(wǎng)站建設,伊川網(wǎng)站制作、伊川網(wǎng)頁設計、伊川網(wǎng)站官網(wǎng)定制、小程序定制開發(fā)服務,打造伊川網(wǎng)絡公司原創(chuàng)品牌,更為您提供伊川網(wǎng)站排名全網(wǎng)營銷落地服務。

Dim frm As New Form2

frm.TextBox2.Text = "123"

frm.ShowDialog() 可以取到form1里面窗體傳的值

還有一種方法:From1 :

Dim frm As New Form2

frm.Owner = Me

frm.ShowDialog()

from2 : Private frmParent As Form1

frmParent = Me.Owner

Me.TextBox2.Text = frmParent.TextBox1.Text

VB.NET在用Show方法載入窗口時如何將模式設置為對話框,父窗口為Me?

這是C#的方法,你自己轉(zhuǎn)換為vb.net的,轉(zhuǎn)不了再追問吧。

private?void?button1_Click(object?sender,?EventArgs?e)

{

Form2?frm?=?new?Form2();

frm.Show();

frm.Owner?=?this;

MethodInfo?mi?=?typeof(Application).GetMethod("RunDialog",?BindingFlags.Static?|?BindingFlags.NonPublic);

mi.Invoke(null,?new?object[]?{?frm});

}

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

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

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

那應該如何來完成兩個窗體的通訊呢?我們要做的是把當前的Form1實例傳遞給Form2,如果是這樣的話,問題就很好解決了。

方法1:首先,我們在Form2中定義:

Private mF_Form As Form1

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

Public Sub New(ByVal form As Form1)

MyBase.New()

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

InitializeComponent()

Me.mF_Form = form

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

End Sub

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

Dim f1 As New Form2(Me)

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

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

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

在Form1類中申明Form2時用如下代碼:

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

f2.owner=me

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

在Form2類的定義中寫如下代碼:

dim f1 as Form1=me.owner

這樣f1對應的就是原來的Form1的實例了,也就可以用這個進行通訊了。但是還是要把不同類之間訪問的域和函數(shù)定義成public,哎,安全確實是一個問題??!

vb.net中l(wèi)istbox內(nèi)容自動換行如何實現(xiàn)

也不是不可以實現(xiàn),只不過復雜一點而已,具體看下面代碼。不過在需要換行等情況下的文本顯示,還是建議用RichTextBox開啟只讀屬性比較省心、比較合適。

Private?Sub?AutoNextRow()

'獲取ListBox行集合文本

Dim?length?As?Integer?=?(ListBox1.Items.Count?-?1)

Dim?items(length)?As?String?'行文本數(shù)組

For?i?As?Integer?=?0?To?length

items(i)?=?ListBox1.Items(i).ToString

Next

'處理ListBox換行

ListBox1.Items.Clear()?'清空行內(nèi)容

Using?g?As?Graphics?=?Graphics.FromHwnd(ListBox1.Handle)

Dim?result?As?New?List(Of?Object)

Dim?w?As?Single?=?ListBox1.ClientSize.Width

Dim?sf?As?SizeF,?str?As?StringBuilder

For?Each?s?As?String?In?items

str?=?New?StringBuilder

For?i?As?Integer?=?0?To?(s.Length?-?1)

sf?=?g.MeasureString(str.ToString??s(i),?ListBox1.Font)?

If?sf.Width??w?Then

result.Add(str.ToString)

str?=?New?StringBuilder

End?If

str.Append(s(i))

If?i?=?s.Length?-?1?Then?result.Add(str.ToString)

Next

Next

ListBox1.Items.AddRange(result.ToArray)?'填充行內(nèi)容

End?Using

End?Sub

vb.net問題

Me.Close是關閉窗體,如果程序只有一個主窗體,就直接關閉程序了

Me.Dispose用來釋放組件,通常不需要手工調(diào)用它

End是強制關閉程序,而不理程序現(xiàn)在的狀態(tài),只有萬不得已的情況下,才使用這個命令。

正常都會調(diào)用Me.Close,然后Me.Close就會自動調(diào)用Me.Dispose。

所以Me.Close是資源釋放最徹底的方式。

而End是資源釋放最不徹底的方式。

當前標題:vb.netowner的簡單介紹
本文路徑:http://www.muchs.cn/article40/hchoho.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營銷推廣、自適應網(wǎng)站、搜索引擎優(yōu)化App開發(fā)、網(wǎng)站導航、企業(yè)建站

廣告

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

外貿(mào)網(wǎng)站建設