再发一帖问问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的选择项设置问题,看看是不是默认选择就是全选 --------------------编程问答--------------------
好像也不行 --------------------编程问答--------------------
你是指哪个属性?我只设了行FullRowSelect属性为true --------------------编程问答-------------------- 你是不是想只选择一行?还是不想让鼠标选择?
如果将fullrowselect设置为false,我记得就是选择只是其中一个item,再不行就是重写mouesemove事件
补充:.NET技术 , C#