问题标签 [double-click]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - DataGridView 的绑定表在双击时只生成一个 RowChanged 事件。我如何让它做两个?
我有一个 DataGridView,它的 DataSource 是一个 DataTable。此 DataTable 有一个布尔列,它被解释为 DataGridView 中的一个复选框。
当用户单击一个复选框时,它会被选中,并且 selectionTableRowChanged 将输出“Is Selected”。
同样,当用户再次检查时,该框被清除,并且 selectionTableRowChanged 输出“未选中”。
这是我遇到问题的地方:
当用户双击复选框时,复选框被选中,RowChanged 事件被调用(“Is Selected”),然后复选框被清除,不会调用相应的 RowChanged 事件。现在 RowChanged 事件的订阅者不同步。
我现在的解决方案是继承 DataGridView 并覆盖 WndProc 以吃掉 WM_LBUTTONDBLCLICK,因此任何双击控件都会被忽略。有更好的解决方案吗?
insert - 双击双插入分辨率?
一名团队成员在使用旧的内部系统时遇到了问题,其中用户双击网页上的链接可能会导致从浏览器发送两个请求,从而导致在比赛中同一记录的两个数据库插入健康)状况; 最后一个运行失败,主键违规。已经提出并讨论了几种解决方案和技巧:
在网页上使用 Javascript 通过禁用第一次点击时的链接来减少第二次点击。这是减少问题发生的一种快速简便的方法,但不能完全消除它。
将服务器端的请求执行包装在事务中。由于相关表上的服务器负载和锁定级别,这被认为过于昂贵的操作。
捕获失败的插入引发的主键异常,将其识别为这样,然后吃掉它。这具有以下缺点:(a) 供应商锁定,必须知道特定于数据库的异常的细微差别,以及 (b) 可能不记录/处理合法的数据库故障。
#3 的扩展,通过在插入失败时尝试更新记录并检查更新结果以确保它返回 1 条受影响的记录。
是否还有其他未考虑的选项?被忽视的选项是否有优缺点?万恶之中,孰轻孰重?
.net - 处理用户在winforms应用程序中双击按钮的最佳方法?
我正在开发一个 WinForms 应用程序,其中有一个用户控件。用户控件中的按钮将事件引发到要由其他代码处理的表单。其中一个按钮启动一些进程,如果它们同时运行会导致问题。我在代码中有管理状态的逻辑,因此如果进程已经在运行,用户通常无法运行该进程。但是,如果用户双击该按钮,它将以如此快的速度启动该过程两次,以至于我很难阻止它。
我想知道,处理这个问题的最佳方法是什么?
我首先在单击事件中禁用按钮,但在第一次单击之前第二次单击会导致按钮被禁用。在代码中设置其他标志也没有捕捉到它。
我正在考虑在引发事件的代码上添加某种同步锁,但我想知道你们是否有更好的主意。
由于这个项目大部分已经完成,我正在寻找不涉及彻底重写应用程序(如实现复合应用程序块)的答案,但是,也可以随意发布这些想法,因为我可以在我的下一个项目中使用它们.
apache-flex - 无法让 itemDoubleClick 事件在 Flex 中工作(即使使用 doubleClickEnabled=true)
我正在尝试使用双击事件在 Flex 中做一个简单的数据网格,但我无法itemDoubleClick
触发:
如果我使用该itemClicked
事件,那么该事件就会很好地引发。当我搜索这个问题时,我发现很多人说'你需要设置doubleClickEnabled=true
,但我已经这样做了,它仍然不起作用。
该控件嵌套在 VBox 和其他容器的多个级别中。当然,我不需要doubleClickEnabled
在每个容器上进行设置吗?
只是为了澄清我是如何测试这个的 - 我的refererRowDoubleClicked
事件处理程序中有一个警告框,当我使用它时它永远不会显示itemDoubleClick
javascript - javascript document.write 在外部 js 文件中
在从事大型、高负载的项目时,我遇到了论坛和博客上已经在数十亿个主题中描述的问题,但没有解决方案对我的情况有帮助。这是故事。
我有横幅的HTML代码,我不知道代码是什么。有时它是纯 HTML,但有时它是<script>
带有 document.write的<script>
标签,其中带有 src 的标签,可以在其中双击网络。
所以我们有:脚本 > document.write > 脚本(双击)。
双击网络,您可能知道,也使用 document.write 并且大多数时候他们提供需要加载更多 js 文件的 flash 横幅。
所以毕竟我们有: script > document.write > script(doubleclick) > document.write > script > ...
当您直接将它放在 HTML 中时,这很有效。页面渲染1部分,加载banner1,继续渲染页面,加载banner2,完成页面渲染。
但是现在我需要先渲染页面,并且只有在加载横幅之后。作为横幅使用 document.write 我需要在 window.onload 事件之前加载它(注意:在 window.onload document.write 之后将重写整个文档。)
我做了什么:
在头部分我有一个横幅对象(真正的命名空间类型很大:)),具有属性范围。
当页面渲染和横幅代码相遇时,我将横幅的代码放入范围并放置<div id="bannerPlaceHolder"+id></div>
——所以这里我稍后需要放置横幅内容
页面呈现和</body>
标记之前,我将<script>banners.load()</script>
banners.load 方法对范围数组中的每个项目执行此操作:
只有在此之后,我才有window.onload()
这样做的事件:
获取所有横幅codeHolders并逐个节点将其节点从codeHolder附加到placeHolder,因此结果我在渲染页面后加载了横幅并且横幅位于正确的位置。
除了 IE 之外,一切都很完美,它会加载以异步方式动态放入 DOM 的任何 js 脚本,因此双击脚本中的 document.write 会将节点附加到文档的末尾,而不是在我的 codeHolder 节点中。像往常一样,它只在 IE 中。
我将非常感谢任何可能知道解决方案的人。
flash - 在 Flash (AS2) 中检测鼠标双击
有没有办法使用 ActionScript 2.0 检测鼠标双击按钮对象?
c# - 从数据文件启动应用程序
双击 Word 文档时,Word 会自动运行并加载文档。
对我的 C# 应用程序执行相同操作需要哪些步骤?
换句话说,假设我的应用程序使用“.XYZ”数据文件。我知道如何在双击 .XYZ 数据文件时告诉 Windows 启动我的应用程序。 但是我如何在我的应用程序中找出选择了什么数据文件以便我可以加载它?
c# - .NET/C# 中的 TreeView 双击行为
我有一个常规的 .NET Windows 窗体树视图控件。节点设置如下:
团体
- -孩子
- -孩子
如果我双击折叠的 Group 节点,它会展开(如您所料)并触发 NodeMouseDoubleClick 事件,如果所选节点不是组节点,我的代码会在其中执行某些操作。
当组位于树视图底部附近时会出现问题,因此当我双击组节点时,它需要树视图垂直展开以使子节点适合视图。在这种情况下,如果我双击 Group 节点,当它展开并调整树视图时,我的鼠标光标位于子节点上(它必须向上推所有内容),这会导致 NodeMouseDoubleClick 认为子节点被选中,这会导致非常奇怪的行为。
我怎样才能解决这个问题?我不应该使用 NodeMouseDoubleClick 还是..?
我看到它也在反馈报告中解释了展开/折叠后 TreeView DoubleClick 事件的问题导致滚动的变化。
java - Java:忽略单击双击?
谁能想到一个好方法来忽略 Java 中双击附带的单击?
我希望对每种行为都有不同的行为,例如:
- 单击在单击点上绘制十字准线
- 双击选择屏幕上的对象,但不应在单击点上绘制十字准线
...谁能想到办法做到这一点?某种计时器设置可能吗?一个想法赞赏:-)
<免责声明> ...是的,我知道我正在犯下最令人发指的可用性/用户界面失礼。</免责声明>
编辑#2:
尽管这有效,但由于计时器导致的延迟令人抓狂-我放弃了这个解决方案,并使用中键单击而不是双击...
编辑:
谢谢cgull - 这是我能够想出的,因为您确认没有简单的方法可以做到这一点(请注意,如果我设置计时器 < 200 在点击和计时器之间看到奇怪的比赛,但只要我将其设置为 > 200 的值,这很正常):
winforms - TreeView 重新获取 Ctrl+Click 的焦点
我有一个 WinForms TreeView 控件,我想用它来根据当前选择的节点打开另一个表单。当我 Ctrl+单击节点时,我想打开另一个表单。
目前,如果我在 DoubleClick 处理程序中打开另一个表单(显然,双击节点),它会按照我想要的方式工作;但是,如果我使用 Click(或 MouseClick)处理程序并在按下 Control 键时打开另一个表单,它会正确打开另一个表单,但会将焦点返回到原始表单。
打开另一个表单后,如何让焦点不会返回到原始表单(我仍然想保持打开状态)?为什么 Click 和 DoubleClick 处理程序之间的行为不同?