我想在单击按钮时检查所有复选框。所有对象都在Visual Studio 2010 C++的应用程序表单中。问题的关键是每个对象(复选框)都有不同的名称,CheckBox1,CheckBox2等。我创建了一个UnicodeString,其值为“CheckBox”,并且具有从1开始的int值,并将它们组合在第三个变量中以查找对象,这很有效,但我不知道如何检查所有这些框,请帮忙。
Windows 7、64位、Visual Studio 2010(C++)或C++ Builder 2010。
Windows 7、64位、Visual Studio 2010(C++)或C++ Builder 2010。
我曾为另一个组件做过类似的事情,这是我使用C++ Builder完成的方式。
for (int i = 0; i < this->ComponentCount; i++)
{
TCheckBox *TempCheckBox = dynamic_cast<TCheckBox *>(this->Components[i]);
if (TempCheckBox)
{
TempCheckBox->Checked = true;
}
}
cliext::vector<System::Windows::Forms::CheckBox^> items;
items.push_back(checkbox1);
.
.
.
items.push_back(checkboxN);
包括这个内容也很重要
#include <cliext/vector>
由于标准库中的法向量当前无法支持此控件。
TCheckBox*
指针放入一个数组或std::vector
中,需要时可以通过循环遍历它们,例如:TCheckBox* cb[10];
__fastcall TForm1::TForm1(TComponent *Owner)
: TForm(Owner)
{
cb[0] = CheckBox1;
cb[1] = CheckBox2;
...
cb[9] = CheckBox10;
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
for (int i = 0; i < 10; ++i)
cb[i]->Checked = true;
}
__fastcall TForm1::TForm1(TComponent *Owner)
: TForm(Owner)
{
for (int i = 0; i < 10; ++i)
cb[i] = (TCheckBox*) FindComponent("CheckBox" + IntToStr(i+1));
}