none
Listbox 的BUG RRS feed

  • 问题

  • Form11.Designer.vb

    <Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
    Partial Class Form11
        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 フォーム デザイナを使用して変更できます。  
        'コード エディタを使って変更しないでください。

        Private Sub InitializeComponent()
            Me.TextBox1 = New System.Windows.Forms.TextBox
            Me.lstSeg = New ListBox
            Me.SuspendLayout()
            '
            'TextBox1
            '
            Me.TextBox1.Location = New System.Drawing.Point(12, 79)
            Me.TextBox1.Name = "TextBox1"
            Me.TextBox1.Size = New System.Drawing.Size(255, 19)
            Me.TextBox1.TabIndex = 0
            '
            'lstSeg
            '
            Me.lstSeg.Cursor = System.Windows.Forms.Cursors.UpArrow
            Me.lstSeg.ForeColor = System.Drawing.SystemColors.WindowText
            Me.lstSeg.IntegralHeight = False
            Me.lstSeg.ItemHeight = 12
            Me.lstSeg.Items.AddRange(New Object() {"1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0"})
            Me.lstSeg.Location = New System.Drawing.Point(12, 121)
            Me.lstSeg.Name = "lstSeg"
            Me.lstSeg.RightToLeft = System.Windows.Forms.RightToLeft.No
            Me.lstSeg.SelectionMode = System.Windows.Forms.SelectionMode.MultiExtended
            Me.lstSeg.Size = New System.Drawing.Size(633, 130)
            Me.lstSeg.TabIndex = 8
            '
            'Form11
            '
            Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 12.0!)
            Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
            Me.ClientSize = New System.Drawing.Size(842, 502)
            Me.Controls.Add(Me.lstSeg)
            Me.Controls.Add(Me.TextBox1)
            Me.Name = "Form11"
            Me.Text = "Form11"
            Me.ResumeLayout(False)
            Me.PerformLayout()

        End Sub
        Public WithEvents TextBox1 As System.Windows.Forms.TextBox
        Public WithEvents lstSeg As ListBox
    End Class




    Form11.vb

    Public Class Form11

        Private Sub TextBox1_Leave(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.Leave
            MsgBox(11)
        End Sub

    End Class


    画面刚载入时,焦点是在TextBox上面,这是如果点击ListBox,提示信息显示出来后,在listbox中上下移动鼠标,listitem自动被选中。
    俺猜想应该是listbox的SelectionMode设置为SelectionMode.MultiExtended时,
    实现上的BUG.
    请问有没有好的解决办法?谢谢
    2008年1月17日 5:42

答案

全部回复

  • 我运行了你的代码,没有任何问题,焦点在msgbox上,不能选listitem

     

    2008年1月17日 6:55
    版主
  • 点击msgbox 的yes按钮后,在listbox上面移动鼠标,就能再现我所叙述的问题,ListItem会莫名其妙的被选中喔。

    2008年1月17日 9:14
  • 因为它只截获到mouse_down消息

     

    应该不能算bug

     

    2008年1月17日 9:28
    版主
  •  feiyun0112 写:

    因为它只截获到mouse_down消息

     

    应该不能算bug

     


    可是listbox中的项莫名其妙的被选中,是不对的吧,而且这样一来会触发SelectedIndexChanged事件,同时不会触发mouseup事件。
    2008年1月18日 0:58