Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#通过循环更改多个标签_C#_Loops_Pointers_Label - Fatal编程技术网

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