Winform自带的ComboBox控件中有个TextChanged事件,本人好像发现一个貌似Bug的问题:
DropDownStyle = ComboBoxStyle.DropDownList(其他情况没试),用鼠标选择Item就会触发TextChanged事件,但是在ComboBox有焦点的情况下,滚动MouseWheel或用键盘上下键选择Item,ComboBox显示的Text有变化,就是不触发TextChanged事件。
大家都来围观,是不是Bug?
DropDownStyle = ComboBoxStyle.DropDownList(其他情况没试),用鼠标选择Item就会触发TextChanged事件,但是在ComboBox有焦点的情况下,滚动MouseWheel或用键盘上下键选择Item,ComboBox显示的Text有变化,就是不触发TextChanged事件。
大家都来围观,是不是Bug?
解决方案
20
在本人遇到过的问题中 TreeView 问题最多
给你演示一下
button4的代码是这样的
private void button4_Click(object sender, EventArgs e) { MessageBox.Show("start:" + treeViewEx1.Nodes.Count.ToString()); TreeNode node = treeViewEx1.Nodes[0]; treeViewEx1.Nodes[0] = treeViewEx1.Nodes[1]; treeViewEx1.Nodes[1] = node; MessageBox.Show("end:" + treeViewEx1.Nodes.Count.ToString()); }
上次原因是有需要 本人需要对treeview里面的node排序 结果排序的时候发现悲剧了
可以看到 本人代码只是想交换两个节点 但是悲剧的是 那两个节点在treeview中出现了双份 而且 就算是弹出 Nodes的Count 你也可以看到 明明多出来了节点Count却也依然是 4 没有去看他源码 内部实现不知道
上面可以看到 焦点一直不停的在 node0 和 node2 上交换
其实本人是一直在不停的右键点击node2 当右键点下的时候 焦点到了 node2 上 但是抬起的时候 马上又回到了上一次选择的节点 虽然看到焦点变换了一次 但是 SelectedNode 却没有变过 所以每次当本人需要对treeview绑定右键菜单的时候都要去重写 treeview
public class TreeViewEx : TreeView { protected override void OnMouseDown(MouseEventArgs e) { this.SelectedNode = this.GetNodeAt(e.X, e.Y); base.OnMouseDown(e); } }
这个图是加了上面代码重写的 treeview 为了让上面的图中node的焦点跟着本人的鼠标点击移动
假如说有checkbox 双击checkbox也会有问题
可以看到本人先后双击了 node0 和 node1 的checkbox 但是本人再回去点击的时候无效了 需要再次点击才能生效
还有其他一些列的问题 包括其他控件也遇到过很多问题 就不一一演示了。