爲了避免重複代碼更改多個標籤,我在找了這個以下解決方案:C#通過循環
private void sensor1SetUnits(string newUnit)
{
foreach (Control ctrl in groupBoxSensor1.Controls)
{
// initialize all labels
if (ctrl is Label)
{
((Label)ctrl).Text = newUnit;
}
}
}
private void sensor2SetUnits(string newUnit)
{
foreach (Control ctrl in groupBoxSensor2.Controls)
{
// initialize all labels
if (ctrl is Label)
{
((Label)ctrl).Text = newUnit;
}
}
}
private void uiInitControls()
{
sensor1SetUnits(units.celsius);
sensor2SetUnits(units.celsius);
}
不過,我已經超過10個groupboxes,我需要每次都在變化標籤到另一個單位。
我希望是這樣的:
private void uiSensorChangeUnits(Control * ptrCtrl)
{
foreach (Control ctrl in ptrCtrl)
{
// initialize all labels
if (ctrl is Label)
{
((Label)ctrl).Text = units.celsius;
}
}
}
private void someFunction()
{
uiSensorChangeUnits(&groupBoxSensor1.Controls);
uiSensorChangeUnits(&groupBoxSensor2.Controls);
}
只要看看'Controls'屬性返回的類型。確定你的參數類型,然後你就完成了。 – Servy
是這個'C'還是'C#'? – paqogomez
相關:[通用所有控件方法](http://stackoverflow.com/questions/17454389/generic-all-controls-method) – Sayse