首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >printDialog之后的Cursor.Wait

printDialog之后的Cursor.Wait
EN

Stack Overflow用户
提问于 2013-01-28 16:57:40
回答 1查看 16.3K关注 0票数 4

我有点小问题。我将光标设置为等待状态。在调用PrintDialog之后,光标返回到默认状态。我无法再次将光标设置为等待状态。代码如下:

代码语言:javascript
复制
Cursor.Current = Cursors.WaitCursor
[...]
Dim result As DialogResult = printDialog.ShowDialog()
If result = DialogResult.Cancel Then
    Return
End If
Cursor.Current = Cursors.WaitCursor
[...]
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-28 17:28:43

我刚刚用你的代码做了一个小测试。在使用您的代码时,我的VS2012没有显示Cursor.Current,但在使用它时没有抛出任何异常。所以我把它改成

代码语言:javascript
复制
Me.Cursor = Cursors.WaitCursor

Dim result As DialogResult = printDialog.ShowDialog()
If result = DialogResult.Cancel Then
    Return
End If
' not necesary any more
'Cursor.Current = Cursors.WaitCursor

在展示了printDialog之后,WaitCursor仍然是

编辑:在和Cursor.Current and Cursor之间的差异上找到了一个很好的解释!

EDIT2:我更改了我的代码,以便使用上面提到的@HansPassant示例中的HourGlass类。现在,即使您输入textBox,WaitCursor也会保留。无论如何-我仍然能够得到丢失的waitCursor时,悬停在边界上的例如。一个textBox。

总而言之,我认为,在仍然可以输入文本aso的情况下,强制使用waitCursor是不太好的。也许您可以考虑禁用控件,直到某种操作完成,然后将光标改回原来的位置。

代码语言:javascript
复制
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Hourglass.Enabled = True

    Dim result As DialogResult = PrintDialog1.ShowDialog()
    If result = Windows.Forms.DialogResult.Cancel Then
        Return
    End If

    'Cursor.Current = Cursors.WaitCursor
End Sub

Hourglass.vb -我希望在将其转换为vb.net时没有犯任何错误

代码语言:javascript
复制
Public Class Hourglass
  Implements IDisposable

  Public Shared Property Enabled As Boolean
    Get
        Return Application.UseWaitCursor
    End Get
    Set(ByVal value As Boolean)
        If value = Application.UseWaitCursor Then Return
        Application.UseWaitCursor = value
        Dim f As Form = Form.ActiveForm
        If Not f Is Nothing AndAlso f.Handle <> IntPtr.Zero Then
            SendMessage(f.Handle, 32, f.Handle, 1)
        End If
    End Set
  End Property

  <System.Runtime.InteropServices.DllImport("user32.dll")>
  Private Shared Function SendMessage(hWnd As IntPtr, msg As IntPtr, wp As IntPtr, lp As IntPtr) As IntPtr
  End Function

  Public Sub Dispose() Implements IDisposable.Dispose
    Enabled = False
  End Sub
End Class
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14558516

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档