【问题标题】:Adding Multi-Select Functionality (Java Developer Learning C#)添加多选功能(Java 开发人员学习 C#)
【发布时间】:2009-06-30 14:59:09
【问题描述】:

我正在处理我继承的一段代码,并试图将其从只能选择一行扩展到能够选择多行。

基本上,我正在使用的项目显示为数据表。它包含“OnSelectItem”和“OnMouseDown”的方法,“OnMouseDown”检查单击是鼠标右键单击还是鼠标左键单击。

一般来说,支持多选功能的功能是如何实现的?除了按住特定键之外,它是通过识别鼠标点击来处理的,还是有不同的方式来实现这种类型的功能?

【问题讨论】:

  • 您正在使用的控件是什么类型的?一些控件被设计为具有“多选”功能而无需付出太多努力。
  • 我还不太熟悉 C# 术语,所以我不确定这个表格显示的哪个部分是控件(或者显示本身是否是控件)。类定义是公共类 SearchList :我猜测的 Control 意味着我正在扩展 Control 或实现控制接口。这是否至少有助于为您提供信息,为我提供找到问题实际答案所需的方向?
  • 根据提供的答案,我能够更全面地探索实现多选功能。这是这个问题的最初目的,因此,我将其标记为已回答。

标签: c# winforms multi-select


【解决方案1】:

您的 cmets 表明您正在使用自定义控件。因此,适用于 Microsoft 提供的一般控件的答案可能根本不起作用。

您应该能够使用已列出的事件来处理此自定义控件中的多选功能。

例如,您可以查看 CheckedListBox 控件。它在每一行前面都有一个复选框。如果选中该框,则该行被“选中”。如果这不是您要查找的选择类型,那么您可以查看详细模式下的 ListView 控件。它允许您设置让用户突出显示多行的选项,使用 CTRL 和/或 SHIFT 来修改鼠标单击影响选择的方式。

【讨论】:

  • 好的。我已经知道如何识别我何时按住 CTRL 键并进行项目选择。我可以沿着这条路多走一点。您关于“[查看] 在详细模式下的 ListView 控件”的建议听起来可能有一些优点。虽然我不知道你到底是什么意思。不幸的是,我什至不确定“详细模式”是什么。对于 C#/Visual Studio 世界来说还是太新了。
  • 弹出打开一个新项目,放入一个ListView控件,然后将“View”属性设置为“Details”。
【解决方案2】:

就我的观点而言,就多选而言,除了鼠标点击之外,它还需要键盘支持

1) 在控件中,如果我们按 shift 键,然后按向上或向下箭头键,那么行也会被选中

2)我们也可以通过复选框列实现多选功能,我不确定这是否可能在您的情况下

3) 还有一个固定列的基础,鼠标点击该列,整行被选中

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-26
    • 2011-01-02
    • 2010-11-22
    • 2011-02-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多