關于如何操作其他窗體的控件或變量的方法
2024-07-21 02:24:14
供稿:網友
關于如何操作其他窗體的控件或變量的方法!
其實解決的方法有很多,在這里只做簡單的總結。對于其他方法,請多指教!
1. 定義全局變量
其實這個方法比較簡單也很好理解,我們只要在一個module里面定義了兩個全局變量就可以了。
例如:public frm1 as new form1()
public frm2 as new form2()
這樣,我們無論在哪里想訪問就很容易了。但是,這樣做會耗費比較多的系統資源。一般來說不要使用全局變量。
2. 使用shared 前綴
使用了shared定義的字段(變量)或者屬性可以被其他窗體調用。
例如:(假設有窗體form1 和 form2 )
在form1中寫入:
public shared m_add as string ‘這樣我們在form1的任何地方都可以更改m_add的值
private sub form1_load(byval sender as system.object, byval e as system.eventargs) handles mybase.load
m_add = "111"
end sub
在form2中寫入:
private sub button1_click(byval sender as system.object, byval e as system.eventargs) handles button1.click
messagebox.show(form1.m_add) ‘顯然我們可以得到form1的這個變量了
end sub
注意:使用shared時,不用定義實例,被定義成shared的變量或屬性在所有的實例中都是一個值。就象上面的例子中使用form1.m_add一樣。所以如果是打開很多的同一個窗體的實例時,該值不變化,可以用來記錄打開的實例數量。
3.這種方法傳遞一個窗體實例過去,這樣就可以獲得該實例的變量與屬性了。當然也可以對他們進行操作。
例如:在form1中
dim frm as new form2(me)
frm.show()
在form2中:
dim m_parent as form1
public sub new(byval sender as object)
mybase.new()
'該調用是 windows 窗體設計器所必需的。
initializecomponent()
m_parent=ctype(sender,form1)
'在 initializecomponent() 調用之后添加任何初始化
end sub
private sub button1_click(byval sender as system.object, byval e as system.eventargs) handles button1.click
m_parent.textbox1.text = "1111"
end sub
注意:這種方法可以很方便的獲得和使用另一個窗體的變量和控件,是一個不錯的選擇。如果我們只是想從form1獲得一些變量或屬性的值的話,可以直接傳遞變量或屬性過去,而不是窗體的實例。