none
VB2005 中使用DirListBox出现“Exception Processing Message c000013“错误 RRS feed

  • 问题

  • VB2005 中使用到了DirListBox。

    当选择A驱时,系统报“processing message c000013 parameters 764cbf9c 4 764cbf9c 764cbf9c“错误。

    按照俺的设计是不应该出现这个信息的。

    请高人指点!!

    (请别在调试模式下测试下面的代码)

     

    代码如下

     

    Form1.Designer.vb

    <Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
    Partial Class Form1
        Inherits System.Windows.Forms.Form

        'フォームがコンポーネントの一覧をクリーンアップするために dispose をオーバーライドします。
        <System.Diagnostics.DebuggerNonUserCode()> _
        Protected Overrides Sub Dispose(ByVal disposing As Boolean)
            Try
                If disposing AndAlso components IsNot Nothing Then
                    components.Dispose()
                End If
            Finally
                MyBase.Dispose(disposing)
            End Try
        End Sub

        'Windows フォーム デザイナで必要です。
        Private components As System.ComponentModel.IContainer

        'メモ: 以下のプロシージャは Windows フォーム デザイナで必要です。
        'Windows フォーム デザイナを使用して変更できます。 
        'コード エディタを使って変更しないでください。
        <System.Diagnostics.DebuggerStepThrough()> _
        Private Sub InitializeComponent()
      Me.DirListBox1 = New Microsoft.VisualBasic.Compatibility.VB6.DirListBox
      Me.DriveListBox1 = New Microsoft.VisualBasic.Compatibility.VB6.DriveListBox
      Me.SuspendLayout()
      '
      'DirListBox1
      '
      Me.DirListBox1.FormattingEnabled = True
      Me.DirListBox1.IntegralHeight = False
      Me.DirListBox1.Location = New System.Drawing.Point(153, 21)
      Me.DirListBox1.Name = "DirListBox1"
      Me.DirListBox1.Size = New System.Drawing.Size(520, 280)
      Me.DirListBox1.TabIndex = 0
      '
      'DriveListBox1
      '
      Me.DriveListBox1.FormattingEnabled = True
      Me.DriveListBox1.Location = New System.Drawing.Point(153, 325)
      Me.DriveListBox1.Name = "DriveListBox1"
      Me.DriveListBox1.Size = New System.Drawing.Size(520, 20)
      Me.DriveListBox1.TabIndex = 1
      '
      'Form1
      '
      Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 12.0!)
      Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
      Me.ClientSize = New System.Drawing.Size(984, 513)
      Me.Controls.Add(Me.DriveListBox1)
      Me.Controls.Add(Me.DirListBox1)
      Me.Name = "Form1"
      Me.Text = "Form1"
      Me.ResumeLayout(False)

     End Sub
     Friend WithEvents DirListBox1 As Microsoft.VisualBasic.Compatibility.VB6.DirListBox
     Friend WithEvents DriveListBox1 As Microsoft.VisualBasic.Compatibility.VB6.DriveListBox

    End Class

     

     

     

     

     

     

     

    Form1.vb

    Public Class Form1

     Private Sub DriveListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DriveListBox1.SelectedIndexChanged
      Try
       DirListBox1.Path = DriveListBox1.Items(DriveListBox1.SelectedIndex)
      Catch ex As Exception

      End Try

     End Sub
    End Class

     

     

    2008年2月14日 7:43

答案

  • 俺反复测试以后,猜测这个问题可能是与DirListbox控件线程同步有一定关系,如果不使用Try-Catch捕捉异常,也就不会出现processing message c000013 parameters 764cbf9c 4 764cbf9c 764cbf9c“错误提示信息。

    因为没有更好的方法解决这个问题,所以按只能出下策了
    Code Snippet

            Try
                Dim strSelectedDriver As String = Me.DriveListBox1.Items(Me.DriveListBox1.SelectedIndex)
                Dim objDriverInfo As System.IO.DriveInfo = My.Computer.FileSystem.GetDriveInfo(strSelectedDriver)

                               Dim strDriveFormat As String = objDriverInfo.DriveFormat
                Me.DirListBox1.Path = strSelectedDriver
            Catch ex As Exception
               
            End Try


    结果倒是正确的,但是感觉有些不很爽
    2008年2月18日 1:54