我正在从串口读取值,并希望将这些值放在表单上的各种文本框中。
文本框被称为:
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;
}
我似乎得到了一个空引用异常
答案 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
。