【发布时间】:2015-10-01 09:44:22
【问题描述】:
我正在尝试从 string 数组中的字符串迭代文本框
static string[] TextBoxes = {
"EmpName",
"Sales",
"BasePay",
"Commission",
"GrossPay",
"Deductions",
"Housing",
"FoodAndClothing",
"Entertainment",
"Misc"
};
以上每一项都是表单的一部分,例如 txtHousing 是房屋输入元素。以此类推。
迭代发生在这里
private void btnClear_Click(object sender, EventArgs e)
{
for (byte i = 0; i < TextBoxes.Length; i++)
{
this["txt" + TextBoxes[i]].Text = "";
}
this.txtEmpName.Focus();
}
除了这个System.String 得到一个奇怪的“错误”,我们不能从this 对象中调用这样的对象吗?
刚刚阅读了一个说 this.getProperty 可能有效的消息来源,所以我会尝试一下。
错误
无法将 [] 索引应用于“Pay_Calculator.PayCalculator”类型的表达式
【问题讨论】:
-
我不知道这是否重要,但我只见过
int i = 0....。也许这就是问题所在?或许这对我来说只是新事物 -
this["txt" + TextBoxes[i]].Text = "";应该做什么?this[string]应该返回什么? - 没有足够的代码来告诉... -
假设清除文本输入所以this.txtDeductions.Text=""。有点认为这里的人已经很清楚了。
-
而且 byte 比 int 小,所以 byte 更明智。
-
您的问题是使用 this["myProperty"]。这是一个 JavaScript 约定。你可以让你的类成为一个索引器,但它只接受一个 int 索引来访问属性。 (好吧,显然您可以使用命名索引器进行索引器重载,但我从未使用过它。)