当前位置:编程学习 > C#/ASP.NET >>

再发一帖问问C# listview 的问题

前几天发帖问了个C# listview的问题,可能是赶上放假,回答的人似乎不是很多,现再开一帖问问。
问题是我重写了一个listview控件,让他支持sub-item的编辑操作,是用一个editbox实现的,主要代码如下:
protected override void OnDoubleClick(EventArgs e)
{
            Point pt = this.PointToClient(Cursor.Position);
            ListViewItem curItem;
            int subItemIndex = GetSubItemAt(pt.X, pt.Y, out curItem);
            DoubleClickEventArgs args = new DoubleClickEventArgs(subItemIndex);
            base.OnDoubleClick(args);

            if (subItemIndex>=0 && !args.Cancel)
            {
                //StartEdit(...);
            }
}
public void EndEdit(bool acceptChanges)
        {
            //validation
            .................
            .................
            AfterSubItemEventArgs e = new AfterSubItemEventArgs(this.SelectedItems[0], m_editSubItemIndex, this.SelectedItems[0].SubItems[m_editSubItemIndex].Text, m_textbox.Text, false);
            OnAfterSubItemEdit(e);
            if (e.Cancel)
            {
                //....
            }
            else
            {
                //set new value
            }
            m_textbox.Visible = false;
            m_editSubItemIndex = -1;
        }
OnAfterSubItemEdit是我自己加的一个事件,现在有种情况,我在OnAfterSubItemEdit中会判断修改的新的值是否已存在,如果存在我会弹出一个messagebox提示用户已存在,用户点了下OK,然后将焦点重新设置给listview,但是这时有个奇怪的现象,移动鼠标可以选择行了,如下:


原因似乎是因为弹出了messagebox,如果不弹出来就不会这样。不知道为何,望各位大侠指教~~ listview C# --------------------编程问答-------------------- 编辑完后,刷新一下呢,看上去像是 页面残留 --------------------编程问答-------------------- 可能是listview的选择项设置问题,看看是不是默认选择就是全选 --------------------编程问答--------------------
引用 1 楼 bdmh 的回复:
编辑完后,刷新一下呢,看上去像是 页面残留

好像也不行 --------------------编程问答--------------------
引用 2 楼 syzlhh 的回复:
可能是listview的选择项设置问题,看看是不是默认选择就是全选

你是指哪个属性?我只设了行FullRowSelect属性为true --------------------编程问答-------------------- 你是不是想只选择一行?还是不想让鼠标选择?
如果将fullrowselect设置为false,我记得就是选择只是其中一个item,再不行就是重写mouesemove事件
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,