我有50个要从中获取文本的文本框。我想遍历这些文本,而不是分别获取每个文本。
我目前拥有的
获取值:
array <System::String ^, 49> s;
s[0]=this->TextBox0->Text;
s[1]=this->TextBox1->Text;
...
s[49]=this->TextBox49->Text;
//do stuff with s
我在寻找什么
array <System::String ^, 49> s;
for (int i = 0; i <= 49; i++)
{
s[i]=this->TextBox[i]->Text;
}
// do stuff with s
我不确定如何遍历文本框。
答案 0 :(得分:0)
基于提供的代码here;合理地假设'textbox1'等引用了用户定义的“ form”子类中的大量相同类型的对象。更好的解决方案涉及以下方面:
private std::array<TextBox> TextBoxes(49);
否则,如果对象在内存中的距离可以仅仅是规则的距离,则以下解决方法也可以起作用。
以下代码不应在专业代码库中使用
除了依赖于内存中存储盒的一致排列的问题外,此解决方案还存在从无效的存储位置进行写入和读取的风险,因为没有保证的边界,就像标准数组一样。
size_t stepSize = static_cast<char*>(&(this->TextBox1)) - static_cast<char*>(&(this->TextBox0));
s[i] = (static_cast<TextBox*>(static_cast<char*>(&(this->TextBox0) + stepSize * i)))->Text;
这只是获取表单内存中前两个文本框之间的距离(以字节为单位,以避免对齐问题),并使用该距离推断其他文本框的地址。