C#通过循环更改多个标签
为了防止代码重复,我正在寻找以下解决方案:C#通过循环更改多个标签,c#,loops,pointers,label,C#,Loops,Pointers,Label,为了防止代码重复,我正在寻找以下解决方案: private void sensor1SetUnits(string newUnit) { foreach (Control ctrl in groupBoxSensor1.Controls) { // initialize all labels if (ctrl is Label) { ((Labe
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多个GroupBox,每次我都需要将所有标签换成另一个单元
我希望这样:
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);
}
您可以将一个GroupBox传递给一个方法,然后使用
private void SetSensorUnitLabels(GroupBox currentGB,string newUnit)
{
foreach(在currentGB.Controls.OfType()中标记ctrl)
{
ctrl.Text=newUnit;
}
}
设置传感器运行标签(groupBoxSensor1,单位为摄氏度);
设置传感器运行标签(groupBoxSensor2,单位为摄氏度);
您可以将一个GroupBox传递给一个方法,然后使用
private void SetSensorUnitLabels(GroupBox currentGB,string newUnit)
{
foreach(在currentGB.Controls.OfType()中标记ctrl)
{
ctrl.Text=newUnit;
}
}
设置传感器运行标签(groupBoxSensor1,单位为摄氏度);
设置传感器运行标签(groupBoxSensor2,单位为摄氏度);
您可以将一个GroupBox传递给一个方法,然后使用
private void SetSensorUnitLabels(GroupBox currentGB,string newUnit)
{
foreach(在currentGB.Controls.OfType()中标记ctrl)
{
ctrl.Text=newUnit;
}
}
设置传感器运行标签(groupBoxSensor1,单位为摄氏度);
设置传感器运行标签(groupBoxSensor2,单位为摄氏度);
您可以将一个GroupBox传递给一个方法,然后使用
private void SetSensorUnitLabels(GroupBox currentGB,string newUnit)
{
foreach(在currentGB.Controls.OfType()中标记ctrl)
{
ctrl.Text=newUnit;
}
}
设置传感器运行标签(groupBoxSensor1,单位为摄氏度);
设置传感器运行标签(groupBoxSensor2,单位为摄氏度);
好人林克是你最好的选择
private void Form1_Load(object sender, EventArgs e)
{
UpdateChildrenInGroupBox<Label>("Test Label");
UpdateChildrenInGroupBox<TextBox>("Test Textbox");
//Wont compile
//UpdateChildrenInGroupBox<Rectangle>("Test Rectangle");
}
private void UpdateChildrenInGroupBox<T>(string value) where T: Control
{
var allGBs = this.Controls.OfType<GroupBox>();
var allControlsInGBs = allGBs.SelectMany(f => f.Controls.Cast<Control>());
allControlsInGBs.OfType<T>().ToList().ForEach(f => f.Text = value);
}
private void Form1\u加载(对象发送方,事件参数e)
{
更新儿童分组框(“测试标签”);
UpdateChildreningGroupBox(“测试文本框”);
//不会编译
//UpdateChildreningGroupBox(“测试矩形”);
}
私有void updateChildreningGroupBox(字符串值),其中T:Control
{
var allGBs=this.Controls.OfType();
var allControlsInGBs=allGBs.SelectMany(f=>f.Controls.Cast());
allControlsInGBs.OfType().ToList().ForEach(f=>f.Text=value);
}
我们在表单中循环所有控件,表单的类型为GroupBox。然后我们选择控件并将其右键强制转换到它们。然后我们得到传递的类型并设置它们的值。好人林克是您在这里的最佳选择
private void Form1_Load(object sender, EventArgs e)
{
UpdateChildrenInGroupBox<Label>("Test Label");
UpdateChildrenInGroupBox<TextBox>("Test Textbox");
//Wont compile
//UpdateChildrenInGroupBox<Rectangle>("Test Rectangle");
}
private void UpdateChildrenInGroupBox<T>(string value) where T: Control
{
var allGBs = this.Controls.OfType<GroupBox>();
var allControlsInGBs = allGBs.SelectMany(f => f.Controls.Cast<Control>());
allControlsInGBs.OfType<T>().ToList().ForEach(f => f.Text = value);
}
private void Form1\u加载(对象发送方,事件参数e)
{
更新儿童分组框(“测试标签”);
UpdateChildreningGroupBox(“测试文本框”);
//不会编译
//UpdateChildreningGroupBox(“测试矩形”);
}
私有void updateChildreningGroupBox(字符串值),其中T:Control
{
var allGBs=this.Controls.OfType();
var allControlsInGBs=allGBs.SelectMany(f=>f.Controls.Cast());
allControlsInGBs.OfType().ToList().ForEach(f=>f.Text=value);
}
我们在表单中循环所有控件,表单的类型为GroupBox。然后我们选择控件并将其右键强制转换到它们。然后我们得到传递的类型并设置它们的值。好人林克是您在这里的最佳选择
private void Form1_Load(object sender, EventArgs e)
{
UpdateChildrenInGroupBox<Label>("Test Label");
UpdateChildrenInGroupBox<TextBox>("Test Textbox");
//Wont compile
//UpdateChildrenInGroupBox<Rectangle>("Test Rectangle");
}
private void UpdateChildrenInGroupBox<T>(string value) where T: Control
{
var allGBs = this.Controls.OfType<GroupBox>();
var allControlsInGBs = allGBs.SelectMany(f => f.Controls.Cast<Control>());
allControlsInGBs.OfType<T>().ToList().ForEach(f => f.Text = value);
}
private void Form1\u加载(对象发送方,事件参数e)
{
更新儿童分组框(“测试标签”);
UpdateChildreningGroupBox(“测试文本框”);
//不会编译
//UpdateChildreningGroupBox(“测试矩形”);
}
私有void updateChildreningGroupBox(字符串值),其中T:Control
{
var allGBs=this.Controls.OfType();
var allControlsInGBs=allGBs.SelectMany(f=>f.Controls.Cast());
allControlsInGBs.OfType().ToList().ForEach(f=>f.Text=value);
}
我们在表单中循环所有控件,表单的类型为GroupBox。然后我们选择控件并将其右键强制转换到它们。然后我们得到传递的类型并设置它们的值。好人林克是您在这里的最佳选择
private void Form1_Load(object sender, EventArgs e)
{
UpdateChildrenInGroupBox<Label>("Test Label");
UpdateChildrenInGroupBox<TextBox>("Test Textbox");
//Wont compile
//UpdateChildrenInGroupBox<Rectangle>("Test Rectangle");
}
private void UpdateChildrenInGroupBox<T>(string value) where T: Control
{
var allGBs = this.Controls.OfType<GroupBox>();
var allControlsInGBs = allGBs.SelectMany(f => f.Controls.Cast<Control>());
allControlsInGBs.OfType<T>().ToList().ForEach(f => f.Text = value);
}
private void Form1\u加载(对象发送方,事件参数e)
{
更新儿童分组框(“测试标签”);
UpdateChildreningGroupBox(“测试文本框”);
//不会编译
//UpdateChildreningGroupBox(“测试矩形”);
}
私有void updateChildreningGroupBox(字符串值),其中T:Control
{
var allGBs=this.Controls.OfType();
var allControlsInGBs=allGBs.SelectMany(f=>f.Controls.Cast());
allControlsInGBs.OfType().ToList().ForEach(f=>f.Text=value);
}
我们在表单中循环所有控件,表单的类型为GroupBox。然后我们选择控件并将其右键强制转换到它们。然后我们得到传递的类型并设置它们的值。只需看看
属性的类型控制返回什么。将该类型设为参数,就完成了。相关:C#,但我来自cj,只需看看控件的类型返回什么。将该类型设为参数,就完成了。相关:C#,但我来自cj,只需看看控件的类型返回什么。将该类型设为参数,就完成了。相关:C#,但我来自cj,只需看看控件的类型返回什么。将该类型设为参数,就完成了。相关:C#,但我来自C