c# - 在 C# 中使用字符串作为名称创建对象

标签 c# .net winforms visual-studio-2010

我可能会以错误的方式解决这个问题,所以我会列出完整的场景......

我有一个数据表,其中包含许多项目 - 例如库存项目。此表中的数据可以更改,但它是从数据库中填充的,因此它是一个不同的列表。我希望用户能够选择其中的一些,我想通过为我的 DataTable 中的每个项目创建一个新的复选框对象来实现这一点。

到目前为止,我有以下内容(我知道这是错误的,但说明了我想要达到的目的!):

string cbName = "cbNewTest";
int cbPosition = 24;
int cbTab = 1;

foreach (DataRow row in tblAllTests.Rows)
{
    string cbNewName = cbName + cbTab.ToString();
    this.(cbNewName) = new System.Windows.Forms.CheckBox();
    this.testInfoSplitContainer.Panel2.Controls.Add(this.(cbNewName));

    this.(cbNewName).AutoSize = true;
    this.(cbNewName).Location = new System.Drawing.Point(6, cbPosition);
    this.(cbNewName).Name = cbNewName;
    this.(cbNewName).Size = new System.Drawing.Size(15, 14);
    this.(cbNewName).TabIndex = cbTab;
    this.(cbNewName).Text = row["itemDesc"].ToString();

    cbPosition = cbPosition + 22;
    cbTab = cbTab + 1;
}

所以问题当然是括号里的东西了。本质上,我希望这是我的字符串 'cbNewName' 中的任何内容,但我真的不知道该怎么做......我习惯了 SQL,因为我是一个数据库 gal,所以这可能意味着我已经编码全错了...

任何帮助将不胜感激...我对 C#(或者就此而言,数据库之外的任何编程)非常陌生,因此不胜感激!

最佳答案

您可以创建一个 CheckBox 作为变量,就像其他任何东西一样。无需将其分配给 Form 的属性之一,无论如何都不可能动态生成:

CheckBox newCheckBox = new CheckBox();

// (Initialize your new CheckBox here, basically exactly as you're
// already doing except instead of this.(cbNewName) you use newCheckBox)

this.testInfoSplitContainer.Panel2.Controls.Add(newCheckBox);

如果您以后需要访问它,因为您已经设置了名称,只需执行以下操作:

(CheckBox)this.testInfoSplitContainer.Panel2.Controls["theName"]

关于c# - 在 C# 中使用字符串作为名称创建对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8595454/

相关文章:

c# - 查找 .NET 内存泄漏?

c# - 使用 C# 将 Excel 第一列读取到数组中

C# 与雅虎天气 api

C# 和 SQL 服务器 : execute stored procedure

c# - 在 C# 中捕获多个按键

c# - C# 中的缩放图像

c# - 用可用字体列表填充 ComboBox

javascript - 如何从该方法内部识别为 window.external.method 调用的 Web 浏览器控件实例?

.net - 至少包含 1 个字母和 1 个数字的正则表达式

C#:将 JSON 原语反序列化为 .NET 复杂类型