【问题标题】:How to know if a user has stopped their selection in a datagridview?如何知道用户是否已停止在 datagridview 中的选择?
【发布时间】:2016-06-27 22:54:06
【问题描述】:

我的场景:我有一个 datagridview,它包含一些数据。用户可以在该 datagridview 中选择一行或多行,他们需要知道他们选择的行的摘要。

在 datagridview 中处理多行很容易,而且我可以毫无问题地获得用户需要的内容:两个数字表示选择了多少项目,以及它们在这些行中的总重量。我将这些数据传递给一个小的摘要表单来显示,然后我将显示该表单的代码放在dgv.SelectionChange() 下。 但随后灾难随之而来:每次用户选择一行时,都会出现该表单。也就是说,如果用户选择 20 行,他们将看到 20 个汇总表单......而且不止这些,嗯......你可以想象。我想在SelectionChange() 里面放一些东西来检查用户是否停止了他们的选择.. 但想不出任何东西。

这似乎是一件非常简单的事情,但不知怎的我无法弄清楚.. 我的问题,如何知道用户是否停止了他们在 datagridview 中的选择?

【问题讨论】:

    标签: vb.net datagridview


    【解决方案1】:

    我仍然没有足够的分数来发表评论,所以我的回答是我认为如果不添加另一个控件(即按钮)就不能可靠。你无法读懂用户的想法,而且由于行数是可变的,你怎么知道?如果光标离开 DGV,您可以尝试类似的操作,但这也会带来问题。虽然对于那些只选择 1 行的人来说这将是一个额外的点击,但我仍然认为有一个“获取摘要”按钮将是要走的路。有点像选择要比较的项目时 - 您可以点击任意数量的项目,虽然它们可能会显示您目前在另一个区域中选择的项目,但在您点击比较按钮之前不会出现比较表。

    【讨论】:

    • 感谢您的回答。虽然这确实可以解决问题,但我发现我会使用工具提示来显示信息而不是弹出表单,一切都会好的:我只需将工具提示初始延迟设置为 1 或 2 秒。虽然添加按钮是一个好方法,但在我的情况下,老实说,我试图避免向已经很复杂的表单添加更多控制。如果我能想到一种方法将我的表单分成几个子表单,也许我以后会使用这种方法。
    【解决方案2】:

    据我了解,您实际上有两种选择。

    添加按钮

    由于您无法确定选择何时完成,只需添加一个按钮,该按钮将调用您要显示的表单,这样您就可以确定它只会在用户请求时显示。

    使用计时器

    另一个选项是使用计时器,每次选择更改时,您都会将计时器重置为一秒(以保持示例简单)。 每当计时器滴答作响时,您都会调用表单并停止计时器。这样,它会在用户做出选择后一秒(或更短)触发,并给他一秒的时间来更改它...

    老实说,我认为按钮选项是最好的,因为您将权力交给了用户。也许他们会想要选择一些行但不想看到您的表单,因为他们只会将其复制并粘贴到其他地方...

    【讨论】:

    • 虽然按钮很好用,但我试图避免在我的表单中添加更多控件,因为它目前已经很复杂了。当我找到一种方法来划分我的表单同时仍然保持其所有信息完好无损时,我会考虑该按钮。不过,由于计时器的原因,我会接受您的回答。这将我引向另一个解决方案,我什至不需要创建摘要表单:工具提示。 Tooltip 有我需要的所有东西,信息,计时器,在我的情况下非常方便。我只需要设置toolTip1.InitialDelay = 1500,它完全超出了我的预期:D
    • @HaPhan OK 让我在今天晚些时候的回答中补充一下,这样会更准确,将来可能会对其他人有所帮助
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-06
    • 2014-04-05
    • 2021-05-24
    • 2021-07-01
    • 2021-11-30
    • 1970-01-01
    相关资源
    最近更新 更多