Code Bye

是不是bug

Winform自带的ComboBox控件中有个TextChanged事件,本人好像发现一个貌似Bug的问题:
DropDownStyle = ComboBoxStyle.DropDownList(其他情况没试),用鼠标选择Item就会触发TextChanged事件,但是在ComboBox有焦点的情况下,滚动MouseWheel或用键盘上下键选择Item,ComboBox显示的Text有变化,就是不触发TextChanged事件。
大家都来围观,是不是Bug?
解决方案

20

引用 8 楼 yuankaiwsl 的回复:
Quote: 引用 6 楼 crystal_lz 的回复:

习惯就好 很多自带控件都有bug

真得注意啊!

在本人遇到过的问题中 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 但是本人再回去点击的时候无效了 需要再次点击才能生效
还有其他一些列的问题 包括其他控件也遇到过很多问题 就不一一演示了。


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明是不是bug