我想了兩種思路,winform沒(méi)有findControl,只有個(gè)this.Controls.Contains("textBox1"),因此除了遍歷沒(méi)辦法了。。。
成都創(chuàng)新互聯(lián)自2013年起,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都做網(wǎng)站、網(wǎng)站建設(shè)、外貿(mào)營(yíng)銷網(wǎng)站建設(shè)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元來(lái)賓做網(wǎng)站,已為上家服務(wù),為來(lái)賓各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:18980820575
思路1:遍歷Controls,具體你自己完善下,
if(this.Controls.Count0)
{
foreach(Control c in this.Controls)
if(c.GetTepy==Tepyof(TextBox))
string str += ((TextBox)c).Text;
}
在您的代碼中,您已經(jīng)成功使用了RegAsm命令將DLL注冊(cè)為COM組件,并在VB6中成功引用了該組件的類型庫(kù)文件(TLB文件)。此外,您還在VB6代碼中聲明了一個(gè)YCImageDo類型的對(duì)象,并成功創(chuàng)建了該對(duì)象。
但是,當(dāng)您嘗試使用YCImageDo對(duì)象的屬性和方法時(shí),卻發(fā)現(xiàn)這些成員不可見(jiàn)。這可能是因?yàn)樵诰帉慏LL代碼時(shí)您沒(méi)有正確地聲明這些成員的可見(jiàn)性。
在VB.NET中,您可以使用"Public"關(guān)鍵字來(lái)聲明一個(gè)類型的成員(屬性、方法、過(guò)程等)對(duì)外可見(jiàn),而使用"Private"關(guān)鍵字則聲明該成員僅在類型內(nèi)可見(jiàn)。如果您希望YCImageDo類型的成員在VB6代碼中可見(jiàn),則應(yīng)將這些成員聲明為Public類型。
例如,如果您希望YCImageDo類型擁有一個(gè)名為"GetImage"的方法,則可以在DLL代碼中按如下方式聲明該方法:
Public Function GetImage() As String
' 在這里編寫方法的代碼
End Function
同樣,如果您希望YCImageDo類型擁有一個(gè)名為"ImagePath"的屬性,則可以在DLL代碼中按如下方式聲明該屬性:
Public Property ImagePath As String
處理數(shù)據(jù)行(DataRow)
Windows窗體中的數(shù)據(jù)綁定列表框和組合框很節(jié)省時(shí)間 典型的代碼如下(假定已經(jīng)建立了SqlDataAdapter或者其它部件獲取數(shù)據(jù))
Dim ds As New DataSet() SqlDataAdapter Fill(ds Customers ) ListBox DataSource = ds Tables( Customers ) ListBox DisplayMember = CompanyName ListBox ValueMember = CustomerID
在這種情況下 代碼使用Northwind數(shù)據(jù)庫(kù)的顧客記錄工作 DisplayMember屬性設(shè)置為你希望用戶在列表框中看到的記錄字段 它是customers表的CompanyName 通常ValueMember屬性設(shè)置為數(shù)據(jù)表中的一個(gè)鍵字段 對(duì)于customer來(lái)說(shuō)是CustomerID 一旦用戶選擇了列表框中的一行 很容易使用列表框的SelectedValue屬性獲得鍵字段
MsgBox(ListBox SelectedValue)
但是有可能需要一個(gè)與被選擇項(xiàng)相關(guān)的整個(gè)數(shù)據(jù)行對(duì)象的引用 例如 如果被選擇的行需要被刪除 就不知道鍵了 你需要一個(gè)數(shù)據(jù)行的引用以使用Delete方法
典型的Visual Basic開發(fā)者通常這樣想 我已經(jīng)得到了該行的鍵了 我將編寫一些邏輯來(lái)查找使用該鍵的行 這樣可以實(shí)現(xiàn) 但是有更好的實(shí)現(xiàn)方法 可以使用一行代碼獲取與列表框中選項(xiàng)關(guān)聯(lián)的數(shù)據(jù)行
Dim dr As DataRow = CType(ListBox SelectedItem DataRowView) Row
通常該邏輯不會(huì)憑直覺(jué)出現(xiàn) 即使對(duì)經(jīng)驗(yàn)豐富的開發(fā)者 為了解釋這是怎樣實(shí)現(xiàn)的 我把上面的一行拆成幾行 下面的代碼與上面代碼的功能相同
Dim drv As DataRowView drv = CType(ListBox SelectedItem DataRowView) Dim dr As DataRow dr = drv Row
DataRowView類是數(shù)據(jù)行的包裝 它被多個(gè)Windows窗體控件使用 它使得顯示與控件中的數(shù)據(jù)行相關(guān)的數(shù)據(jù)更加容易 當(dāng)列表框被數(shù)據(jù)綁定到數(shù)據(jù)表時(shí)(假定列表框中的有些行當(dāng)前被選定了) 列表框的SelectedItem屬性保存了一個(gè)DataRowView對(duì)象
這意味著我們能把列表框的SelectedItem屬性轉(zhuǎn)換到DataRowView對(duì)象 這就是上面代碼中的第二行實(shí)現(xiàn)的 接著DataRowView暴露一個(gè)Row屬性 它指向被包裝的數(shù)據(jù)行 上面的代碼聲明了一個(gè)數(shù)據(jù)行并設(shè)置了Row屬性
轉(zhuǎn)換對(duì)象的類型以訪問(wèn)它的接口的技術(shù)在Visual Basic 中不是經(jīng)常使用 但是在Visual Basic NET中這是經(jīng)常的 有了上面的例子后 大多數(shù)有經(jīng)驗(yàn)的開發(fā)者迅速跟上了這種技術(shù)
數(shù)據(jù)行的引用(dr)可用于用任何方式維護(hù)行 訪問(wèn)數(shù)據(jù)行中的任何特定字段是可行的 行中的數(shù)據(jù)可以被改變 能使數(shù)據(jù)行的Delete方法把該行標(biāo)識(shí)為刪除 或者從數(shù)據(jù)表的行集合中刪除該行 下面的代碼標(biāo)識(shí)刪除了一行
dr Delete()
lishixinzhi/Article/program/net/201311/12974