0
好了,因此,在總結:控制的C#動態參考
我有3個標籤:lSectAvg1,lSectAvg2,lSectAvg3。
lMask被支持通過對這種方法的順序迭代「CalcResults」進行動態引用。
private void CalcResults(int[] numSet, int arrayCount, ref double max, ref double min)
{
int count = 0;
double sum = 0;
//lMask is assigned. First value is "lSectAvg1".
Control lMask = this.Controls["lSectAvg" + arrayCount.ToString()];
while (count < numSet.Count())
{
sum = sum + numSet[count];
if (numSet[count] > max)
max = numSet[count];
if (min == 0 || numSet[count] < min)
min = numSet[count];
count++;
}
//Basically: "lSectAvg1.Text is set to the average."
lMask.Text = (sum/count).ToString("n2");
}
但是,最後一行代碼中出現錯誤:「對象引用未設置爲對象實例」。
什麼給?應該「this.Controls」是不同的東西?這可能是我的方法/「控制」變量的範圍問題嗎?
基本上是否有類似於SQL中執行字符串作爲代碼的「EXEC」命令?
非常感謝!
編輯:我還應該補充說明錯誤引發後lMask的值是「null」。
確定'arrayCount'被置1 ',而不是'0'? – Rob
事後看來,也許這不是最簡單的方法,但這種方法被稱爲: CalcResults(arrayJagged [count],count + 1,ref max,ref min); 所以,是的,我已經證實它是1. –
什麼是'this'?這是形式嗎?從我記得,'this.Controls'只返回兒童,不是所有的後代。因此,如果文本框位於面板內,您可能需要將其更改爲'somePanel.Controls'。 – Rob