无限数量的复选框

时间:2011-12-11 11:18:57

标签: c++ visual-c++

我想知道如何在单击按钮时创建在上一个下面创建新复选框的机制。复选框的数量不受限制。 我不认为对象表运行良好,所以我考虑在对象列表中实现。 有什么建议吗?

2 个答案:

答案 0 :(得分:1)

以下是我要做的事情:

  1. 创建一个点击该按钮的事件(让我们称之为OnBtnClick
  2. 使用向量/列表保存所有复选框
  3. 调用OnBtnClick时,您执行以下操作:
    • 创建一个包含所需位置和大小的复选框,并确保它收到一个唯一ID(这有助于您在单击/选中/等时区分复选框。)
    • 将复选框添加到列表中(以获取其状态:已选中未选中
    • 将复选框添加到所需的窗口,父窗口(尽管这可能在您创建时自动发生)
    • 如果要为添加的复选框添加事件,则应检查GUI框架的手册(您可能会对所有复选框使用相同的事件处理程序,并根据其ID单独处理它们)
  4. 根据所使用的GUI框架,底部细节可能会有所不同,但想法保持不变。我用wxWidgets,QT和MFC做了这个,但我不知道你使用哪个框架。您应该能够找到每个框架的代码示例。

答案 1 :(得分:0)

如果使用无限数量的复选框,您会怎么做 - 让用户感到困惑?那么,他/她不会再次尝试使用它?不好的想法,你现在可以猜到。

您可以(应该)限制复选框的数量(或者更好,限制表单/对话框上的控件数量)。 IMO,超过10-12个CB对最终用户来说是麻烦的。因此,更好的想法是在对话框/对话框资源上拥有所有,并使所有这些不可见/禁用。当用户执行某些操作时,让它们可见/启用 - 以便最终用户可以对其执行某些操作。

仍需要N个CB,其中N未事先确定?然后,您可以在组合框下面有复选框,或使用列表控件下的复选框。 List Control已经托管了此功能,但对于Combo下的CB,您可能需要编写自己的类。请参阅this article作为示例。