有没有办法遍历C ++中的文本框值?

时间:2018-12-18 07:22:45

标签: visual-studio-2017 c++-cli clr

我有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

我不确定如何遍历文本框。

1 个答案:

答案 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;

这只是获取表单内存中前两个文本框之间的距离(以字节为单位,以避免对齐问题),并使用该距离推断其他文本框的地址。