4

少し問題があります。カーソルを待機状態に設定しました。PrintDialogを呼び出した後、カーソルはデフォルトの状態に戻ります。カーソルを再び待機状態に設定できません。コードは次のようになります。

Cursor.Current = Cursors.WaitCursor
[...]
Dim result As DialogResult = printDialog.ShowDialog()
If result = DialogResult.Cancel Then
    Return
End If
Cursor.Current = Cursors.WaitCursor
[...]
4

1 に答える 1

2

私はあなたのコードで小さなテストをしました。コードを使用すると、VS2012 が表示されませんでしたCursor.Currentが、使用時に例外がスローされませんでした。だから私はそれを

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 と Cursor違いに関するかなり良い説明が見つかりました!

EDIT2:上記の@HansPassantの例からHourGlassクラスを利用するようにコードを変更しました。テキストボックスに入ってもWaitCursorが残るようになりました。とにかく - たとえば、境界線の上にカーソルを置いたときに、waitCursor を失うことができました。テキストボックス。

全体として、テキスト aso を入力することがまだ可能な場合に、waitCursor を強制するのはあまり良くないと思います。おそらく、ある種のアクションが終了するまでコントロールを無効にし、その後カーソルを元に戻すことを検討するかもしれません。

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 に変換するときに間違いがなかったといいのですが

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
于 2013-01-28T09:28:42.783 に答える