簡體   English   中英

如何在Visual Basic(VB.NET)中將字符串作為命令運行

[英]How to run a string as a command in Visual Basic (VB.NET)

我正在運行一個Sub,它以Datatable和String作為參數。

Private Sub Populate(ByVal dttemp As DataTable, ByVal strWhichPart As String)

某一時刻有一個組合框,其中裝有數據表中的某些數據。 組合框的名稱為cmd加上字符串的名稱,例如,當字符串為Person_FirstName時,組合框的名稱為cmbPerson_FirstName。 然后我將項目添加到組合框中,如下所示:

 cmbPerson_FirstName.Items.Add(strHold(rr))

我的問題是我可以將String變成命令嗎? 因為我有很多組合框與子字符串參數具有相同的名稱,我該如何做這樣的工作

strWhichPart.Items.Add(strHold(rr))

其中strWhichPart是字符串。 有沒有可以將字符串作為命令執行的命令? 謝謝。

如果我理解正確,只需使用字符串作為鍵從Form的Controls集合中獲取正確的Controls

CType(Controls(strWhichPart), ComboBox).Items.Add(strHold(rr))

您可以通過使用方法中的代碼創建一個程序集來使用反射來實現此目的,但實際上不建議這樣做。 就像瘋了一樣。 我懷疑.NET開發中沒有需要這種方法的問題。

與其使用這種方法,不如將相關的組合框作為參數傳遞-而不是任意字符串。 組合框是其他任何對象。 您可以創建一個字典,使您可以通過字符串查找組合框。 就像是:

Dictionary(Of String, ComboBox) MyDictionary = new Dictionary(Of String, ComboBox)()
MyDictionary.Add("ComboBoxA", objComboBoxA)
ComboBox objTheComboBox = MyDictionary("ComboBoxA")

您為對象指定的名稱在代碼中不應與語義相關。 如果我將對象命名為“ lstMyObjectNamedThisWayForAReason1”,則不應使用該對象來引用它。 取而代之的是,在組成GUI元素和如何引用GUI元素之間應該有分隔。

例如,如果我創建一個WinForms GUI並直接引用所有項目,則以后必須使用不同的框架編寫另一個前端,我必須重寫每個引用。 如果您不將邏輯直接綁定到控件中,那么這不是問題。

將他們聯系在一起的唯一原因是懶惰和對同事的尊重,因為他們將來可能需要改進您的代碼。 他們為什么要關心GUI的外觀? 他們甚至可能沒有使用Visual Studio! 他們當然不能不刪除您的GUI依賴關系而將您的代碼用於其他地方。

經過對ho1的較小修改,它可以工作。 非常感謝

 CType(Controls("cmb" + strWhichPart), ComboBox).Items.Add(strHold(rr))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM