我想堆叠具有相同名称的按钮,但能够将它们称为个人

时间:2015-02-04 09:10:02

标签: winforms button c++-cli

我想声明一个按钮: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";
     }

现在没关系切换按钮我按下以启动事件,但只有最后一个按钮改变了它的文本。有没有办法让按钮可能是一个数字或它的名字?如果没有,请提供替代解决方案。

1 个答案:

答案 0 :(得分:0)

NewButton是一个实例变量,因此在循环的每次迭代中,您将其替换为另一个实例 - 只能保存一个,因此这是最后一个。

在按下按钮回调按下时,你会得到sender作为参数,该参数应该是按下的按钮。因此,您应该使用sender更新按钮上的文字,而不是使用NewButton