我想声明一个按钮:private: System::Windows::Forms::Button^ NewButton;
然后按下这个按钮生成11个按钮:
int Loc=0;
for(int i=1;i<12;i++)
{
this->NewButton = (gcnew System::Windows::Forms::Button());
this->NewButton->BackColor = System::Drawing::Color::White;
this->NewButton->FlatStyle = System::Windows::Forms::FlatStyle::Flat;
this->TheList->Controls->Add(this->NewButton);
this->NewButton->Location = System::Drawing::Point(-1,Loc-1);
this->NewButton->Size = System::Drawing::Size(200, 30);
this->NewButton->TabIndex = i;
this->NewButton->Text = L"hej"+i;
this->NewButton->Name = L"Button"+i;
this->NewButton->Click += gcnew System::EventHandler(this, &Form2::NewButton_Click);
Loc+=29;
}
private: System::Void NewButton_Click(System::Object^ sender, System::EventArgs^ e) {
NewButton->Text = "Hello";
}
现在没关系切换按钮我按下以启动事件,但只有最后一个按钮改变了它的文本。有没有办法让按钮可能是一个数字或它的名字?如果没有,请提供替代解决方案。
答案 0 :(得分:0)
NewButton
是一个实例变量,因此在循环的每次迭代中,您将其替换为另一个实例 - 只能保存一个,因此这是最后一个。
在按下按钮回调按下时,你会得到sender
作为参数,该参数应该是按下的按钮。因此,您应该使用sender
更新按钮上的文字,而不是使用NewButton
。