【问题标题】:What events are fired after user's click is handled? [duplicate]处理用户点击后会触发哪些事件? [复制]
【发布时间】:2014-08-12 23:06:26
【问题描述】:

我处理用户点击按钮,例如:

 private void btnScanDirectory_Click(object sender, EventArgs e) 
 { 
     // some code
 }

btnScanDirectory_Click() 完成工作后会触发哪些事件?

我问的原因是,在btnScanDirectory_Click() 中,我创建了一个新的Thread(),我在其中“触发并忘记”tree.BeginInvoke() 方法来更新TreeView

所以即使工作线程关闭,主线程仍在处理那些多个BeginInvoke() 调用,并且当我访问树时

tree.ExpandAll();

在同一个btnScanDirectory_Click() - 它没有效果。

我找不到“在调用所有 EndInvoke() 方法时在主线程中等待”的方法,所以我想在 after btnScanDirectory_Click() 触发的情况下尝试 tree.ExpandAll()结束了。

【问题讨论】:

  • 当然它没有任何效果,树开始填充您的 Click 处理程序完成之后。 ExpandAll() 必须仅在线程完成后调用。使用 BackgroundWorker 轻松完成。
  • @HansPassant 我只能使用 Thread() 类...你能帮我在没有 BackgroundWorker 的情况下如何做到这一点吗?
  • 这是什么荒谬的约束?使用适当的工具来完成工作。
  • @HansPassant 感谢您为我的问题投票。干得好。

标签: c# .net multithreading winforms asynchronous


【解决方案1】:

查看此页面。它具有以下详细信息,我认为这就是您所要求的:http://msdn.microsoft.com/en-us/library/system.windows.forms.control.mouseclick.aspx

当光标在控件上时按下鼠标按钮通常会从控件引发以下一系列事件:

  1. MouseDown 事件。

  2. 点击事件。

  3. 鼠标点击事件。

  4. MouseUp 事件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-04
    • 1970-01-01
    • 2020-12-27
    • 2012-12-13
    • 2015-08-13
    • 2015-02-08
    • 2018-04-18
    相关资源
    最近更新 更多