我正在查看.Net Framework ListView(我一直在尝试使用BetterListView,快速版本,并继续遇到我不能做的事情,所以我想我可能会遇到我能做的事情'在更好地记录的MS ListView中做了!)并且有些东西让我感到难过。
我希望这些项目可以编辑,但我想在编辑开始时,所选文本只是项目文本的一部分而不是全部。
这样的一个示例是在Windows资源管理器中,当您有文件扩展名可见时,您开始重命名文件 - 文件名被选中(蓝色背景)但文件扩展名不是,如果用户启动要立即输入,名称将被替换,但扩展名保持不变。
我可以想到解决方法,但想知道是否有办法做到这一点。
答案 0 :(得分:7)
通过适当的消息进行长时间的搜索,答案是......
private void listView1_BeforeLabelEdit(object sender, LabelEditEventArgs e)
{
IntPtr editWnd = IntPtr.Zero;
editWnd = SendMessage(listView1.Handle, LVM_GETEDITCONTROL, 0, IntPtr.Zero);
int textLen = Path.GetFileNameWithoutExtension(listView1.Items[e.Item].Text).Length;
SendMessage(editWnd, EM_SETSEL, 0, (IntPtr) textLen);
}
public const int EM_SETSEL = 0xB1;
public const int LVM_FIRST = 0x1000;
public const int LVM_GETEDITCONTROL = (LVM_FIRST + 24);
[DllImport("user32.dll", CharSet = CharSet.Ansi)]
public static extern IntPtr SendMessage(IntPtr hWnd, int msg, int len, IntPtr order);
这正是我所追求的。感谢其他响应者花时间回答。
答案 1 :(得分:0)
您可以使用gridview。 GridView有ItemEdit。您也可以尝试一些组件,如telerik或devexpress ..
答案 2 :(得分:0)
在这里查看ObjectListView:http://objectlistview.sourceforge.net/cs/index.html它易于使用,非常灵活,而且大部分都是免费的。