将文本插入现有文本框,如数组

时间:2015-09-17 07:32:38

标签: c#

我正在从串口读取值,并希望将这些值放在表单上的各种文本框中。

文本框被称为:

tbMasterParam0, 
tbMasterParam1, 
tbMasterParam2,
...
tbMasterParam15

我想使用它们具有数字命名结构并将它们称为数组的事实。这可能吗?

我附上了代码以提供一些背景信息。

否则我只是在运行一个开关/外壳,但这变得非常笨重。当然,我可以用几行来做到这一点。

    private void displayBoardValue(byte[] BoardParameters)
    {
        uint measurement;
        string value;
        measurement = (uint)(BoardParameters[3] + (BoardParameters[2] << 8));
        value = measurement.ToString();

        this.Controls[("tbMasterParam" + boardManager.parameter_id)].Text = value;
    }

我似乎得到了一个空引用异常

2 个答案:

答案 0 :(得分:3)

我宁愿提取方法

public TextBox FindTextBox(int index) 
{
     // Find corresponding TextBox here 
     // Note .Find(..., true) - scan not only controls on the form, 
     // but all the child panels, groupboxes etc.
     return Controls.Find("tbMasterParam" + index.ToString(), true).First() as TextBox;
}

...

private void displayBoardValue(byte[] BoardParameters)
{
    uint measurement;
    string value;
    measurement = (uint)(BoardParameters[3] + (BoardParameters[2] << 8));
    value = measurement.ToString();

    FindTextBox(boardManager.parameter_id).Text = value;
}

修改:据我在评论中看到,问题是不仅要扫描表单本身,还要扫描面板,在这种情况下,您需要Controls.Find(, true)

答案 1 :(得分:1)

如果我没有记错,您可以使用Find方法实现此目的。 像这样: this.Controls.Find()

您可能需要将其投射到TextBox