C++ 一次执行多项操作

问题描述 投票:0回答:1

我正在制作一个程序,我有很多标签,当你点击它们时,它们会做同样的事情,而不是写大约 40 次,有没有办法减少它

private: System::Void lblHB15_Click(System::Object^  sender,  System::EventArgs^  e) {
    if (HBColumn1 == true) {
        drop (1);
    }
    if (row1 == 6) {
        btnRow1->Enabled = false;
        HBColumn1 = false;
    }
}
events c++-cli action handles
1个回答
0
投票

为什么我完全理解这个问题,而@paul-evans 最终却没有?是看情况,不是看句子。。。嗯,我有一些并列GUI编码和编写的经验,比如MS VB和MS VC++,所以我完全理解。

(尽管我在写完这个问题 7.5 年后才读到它)

我写这个答案以备日后参考,如果其他人有类似的问题。

所以,你(马修)的情况是,

  • 您正在编写 GUI C++ 编码,
  • 你有这么多可见和可点击的“标签”对象(显示方形区域的基本概念,由背景颜色填充,文本由前景色填充)在屏幕上具有他们自己的ID(名称): lblHB1, lblHB2, lblHB3, lblHB4, ..., lblHB15, 等等。
  • 他们每个人都有自己的链接事件(无效函数):lblHB1_Click(...)、lblHB2_Click(...)、lblHB3_Click(...)、lblHB4_Click(...),等等。
  • 你有麻烦,因为它不是一个有效的方法来编写每个单独的标签自己的点击事件。

解决方法是:

  • 用完全相同的字符串命名标签。
    是的,重叠对象的名称
    (同类:标签)。
  • 然后,在您的屏幕(无论开发工具是什么)中,必须有一种方法可以按照您希望的任何特定顺序设置具有相同ID(名称)的对象的每个唯一“索引号”,即使索引号很有可能是由您使用的开发人员工具自动分配的。
  • 因此,您将获得这些标签的名称,例如:lblTitle[0]、lblTitle[1]、lblTitle[2]、lblTitle[3] 等。 是的,现在是一个数组
  • 像这样设置名称和索引号后,事件将转发唯一的一个函数:lblTitle_Click(...)。在这种情况下,点击函数的参数必须包含对象的索引。您的开发工具和 API 必须具有特定的方式来传递此表达式。

查找和研究同名同种对象的索引和事件处理。

我很确定这就是你想要的答案(..然后想要)。

© www.soinside.com 2019 - 2024. All rights reserved.