我一直在升级现有的 .NET Windows Mobile 应用程序以使用 3.5 版本的紧凑框架并在 Windows Mobile 6.5 上运行。我有一个带有 TreeView 的表单。TreeView.Checkboxes 属性设置为 true,以便每个节点都有一个复选框。这在所有以前版本的 Windows Mobile 中都没有问题。
但是,在 6.5 版中,当您单击复选框时,它会立即选中然后取消选中。但它只引发一次 AfterCheck 事件。我可以得到一张支票的唯一方法是双击它(这是错误的行为)。
有没有人见过这种行为?有谁知道它的解决方法?
我已经包含了一个简单的测试表。将此表单转储到针对 Windows Mobile 6 的 Visual Studio 2008 智能设备应用程序中,以了解我的意思。
Public Class frmTree
Inherits System.Windows.Forms.Form
#Region " Windows Form Designer generated code "
Public Sub New()
MyBase.new()
' This call is required by the Windows Form Designer.
InitializeComponent()
' Add any initialization after the InitializeComponent() call.
End Sub
'Form overrides dispose to clean up the component list.
<System.Diagnostics.DebuggerNonUserCode()> _
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing AndAlso components IsNot Nothing Then
components.Dispose()
End If
MyBase.Dispose(disposing)
End Sub
'Required by the Windows Form Designer
Private components As System.ComponentModel.IContainer
Friend WithEvents TreeView1 As System.Windows.Forms.TreeView
Private mainMenu1 As System.Windows.Forms.MainMenu
'NOTE: The following procedure is required by the Windows Form Designer
'It can be modified using the Windows Form Designer.
'Do not modify it using the code editor.
<System.Diagnostics.DebuggerStepThrough()> _
Private Sub InitializeComponent()
Dim TreeNode1 As System.Windows.Forms.TreeNode = New System.Windows.Forms.TreeNode("Node0")
Dim TreeNode2 As System.Windows.Forms.TreeNode = New System.Windows.Forms.TreeNode("Node2")
Dim TreeNode3 As System.Windows.Forms.TreeNode = New System.Windows.Forms.TreeNode("Node3")
Dim TreeNode4 As System.Windows.Forms.TreeNode = New System.Windows.Forms.TreeNode("Node4")
Dim TreeNode5 As System.Windows.Forms.TreeNode = New System.Windows.Forms.TreeNode("Node1")
Dim TreeNode6 As System.Windows.Forms.TreeNode = New System.Windows.Forms.TreeNode("Node5")
Dim TreeNode7 As System.Windows.Forms.TreeNode = New System.Windows.Forms.TreeNode("Node6")
Dim TreeNode8 As System.Windows.Forms.TreeNode = New System.Windows.Forms.TreeNode("Node7")
Me.mainMenu1 = New System.Windows.Forms.MainMenu
Me.TreeView1 = New System.Windows.Forms.TreeView
Me.SuspendLayout()
'
'TreeView1
'
Me.TreeView1.CheckBoxes = True
Me.TreeView1.Location = New System.Drawing.Point(37, 41)
Me.TreeView1.Name = "TreeView1"
TreeNode2.Text = "Node2"
TreeNode3.Text = "Node3"
TreeNode4.Text = "Node4"
TreeNode1.Nodes.AddRange(New System.Windows.Forms.TreeNode() {TreeNode2, TreeNode3, TreeNode4})
TreeNode1.Text = "Node0"
TreeNode6.Text = "Node5"
TreeNode7.Text = "Node6"
TreeNode8.Text = "Node7"
TreeNode5.Nodes.AddRange(New System.Windows.Forms.TreeNode() {TreeNode6, TreeNode7, TreeNode8})
TreeNode5.Text = "Node1"
Me.TreeView1.Nodes.AddRange(New System.Windows.Forms.TreeNode() {TreeNode1, TreeNode5})
Me.TreeView1.Size = New System.Drawing.Size(171, 179)
Me.TreeView1.TabIndex = 0
'
'frmTree
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(96.0!, 96.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi
Me.AutoScroll = True
Me.ClientSize = New System.Drawing.Size(240, 268)
Me.Controls.Add(Me.TreeView1)
Me.Menu = Me.mainMenu1
Me.Name = "frmTree"
Me.Text = "frmTree"
Me.ResumeLayout(False)
End Sub
#End Region
End Class