C# 将文本插入现有文本框,如数组
我正在从串行端口读取值,并希望将这些值放在表单上的各种文本框中 这些文本框称为:C# 将文本插入现有文本框,如数组,c#,C#,我正在从串行端口读取值,并希望将这些值放在表单上的各种文本框中 这些文本框称为: tbMasterParam0, tbMasterParam1, tbMasterParam2, ... tbMasterParam15 我想使用一个事实,即它们有一个数字命名结构,并像调用数组一样调用它们。这可能吗 我附上了代码以提供一些上下文 否则,我只是运行一个开关/机箱,但它变得非常庞大。当然,我可以用几句话来表达 private void displayBoardValue(byte[] Bo
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;
}
private void displayBoardValue(字节[]BoardParameters)
{
单位测量;
字符串值;
测量=(uint)(BoardParameters[3]+(BoardParameters[2]如果我没有弄错,您可以使用Find
方法来实现这一点。
这样地:
this.Controls.Find()
您可能需要将其强制转换为文本框
我宁愿提取一个方法:
公共文本框FindTextBox(int索引)
{
//在这里找到相应的文本框
//注意.Find(…,true)-不仅扫描窗体上的控件,
//但是所有的子面板、分组框等。
返回Controls.Find(“tbMasterParam”+index.ToString(),true).First()作为文本框;
}
...
私有void displayBoardValue(字节[]BoardParameters)
{
单位测量;
字符串值;
measurement=(uint)(BoardParameters[3]+(BoardParameters[2]在哪个位置调用?打开Form.designer.cs,看看这些文本框的真正名称。例如this.tbMasterParam1.Name=“textBox1”;
-此名称将是控件
集合中控件的键。@Dmytro Shevchenko:所有文本框
(即tbMasterParam0..tbMasterParam15
)应该存在。如果不存在,最好抛出一个异常,然后将其吞没。我也看不到您的代码如何处理异常。如果未找到具有所需名称的控件,First()
将抛出无效操作
异常,并显示消息“序列不包含任何元素”
@Jonathan Brown:有没有可能,参数id
实际上超出了0..15
的范围?看起来在第二轮参数id
是16
而且没有这样的文本框你帮了大忙
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;
}