一只小龙虾 2024-04-17 16:06 采纳率: 26.3%
浏览 4

MessageBox.Show会终止RowDragMoveCompleting吗

MessageBox.Show会终止RowDragMoveCompleting吗

img

img

img

弹窗点击确定后表格拖动位置没变

Private Sub VaSpread1_RowDragMoveCompleting(sender As Object, e As DragMoveCompletingEventArgs) Handles VaSpread1.RowDragMoveCompleting
        MessageBox.Show("wa", "wa", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
End Sub

  • 写回答

4条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-04-17 16:06
    关注

    引自免费微信小程序:皆我百晓生

    在 .NET 环境中,当调用 MessageBox.Show 函数时,它会阻塞当前线程并显示一个消息框,直到用户与消息框进行交互(例如点击"确定"、"取消"等按钮)。这意味着在消息框显示期间,其他任何UI操作都会暂停,包括你在VaSpread1_RowDragMoveCompleting事件处理程序中正在进行的行拖动操作。

    如果你的代码片段中的MessageBox.Show调用是在RowDragMoveCompleting事件处理程序中,那么在用户点击消息框上的"确定"之前,行的拖动移动将被暂时阻止。一旦用户点击了"确定",代码将继续执行,并且根据事件处理程序的后续逻辑决定是否真的完成行的移动。

    如果你不希望拖动操作因为消息框而中断,可以考虑以下几种方法:

    1. 使用异步操作:你可以尝试将消息框的显示放在一个新的任务中,这样可以避免阻塞主线程。但是需要注意的是,由于UI更新必须在主线程中进行,所以在消息框关闭后,你需要确保回到主线程来完成行的移动逻辑。以下是使用Task.Run的示例:
    Private Async Sub VaSpread1_RowDragMoveCompleting(sender As Object, e As DragMoveCompletingEventArgs) Handles VaSpread1.RowDragMoveCompleting
        Dim result As DialogResult = Await Task.Run(Function() MessageBox.Show("wa", "wa", MessageBoxButtons.YesNo, MessageBoxIcon.Question))
        
        If result = DialogResult.Yes Then
            ' 在这里添加允许行移动的逻辑
        Else
            ' 在这里添加阻止行移动的逻辑
        End If
        
        ' 如果需要在主线程更新UI,使用Control.Invoke
        Me.Invoke(Sub()
                      ' 更新UI的代码,比如e.Cancel = False来允许移动,或者e.Cancel = True来阻止移动
                  End Sub)
    End Sub
    
    1. 使用模态窗口替代:如果可能的话,可以考虑使用非阻塞的方式来确认用户的操作,比如使用模态窗口或者自定义对话框。这样可以保持UI的流畅性,同时让用户做出决策。

    2. 分离确认逻辑:将确认逻辑移到另一个独立的方法中,在RowDragMoveCompleting事件处理程序中仅记录用户试图进行的操作,然后在消息框响应后再调用这个方法来决定是否执行实际的移动操作。

    请注意,以上代码示例适用于Visual Basic.NET,如果你正在使用C#,语法上会有细微差别,但基本思路是一样的。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 4月17日

悬赏问题

  • ¥20 求个正点原子stm32f407开发版的贪吃蛇游戏
  • ¥15 正弦信号发生器串并联电路电阻无法保持同步怎么办
  • ¥15 划分vlan后,链路不通了?
  • ¥20 求各位懂行的人,注册表能不能看到usb使用得具体信息,干了什么,传输了什么数据
  • ¥15 Vue3 大型图片数据拖动排序
  • ¥15 Centos / PETGEM
  • ¥15 划分vlan后不通了
  • ¥20 用雷电模拟器安装百达屋apk一直闪退
  • ¥15 算能科技20240506咨询(拒绝大模型回答)
  • ¥15 自适应 AR 模型 参数估计Matlab程序