繁体   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