Jam*_*rke 5 c# text listview edit
我正在查看.Net Framework ListView(我一直在尝试BetterListView,快速版本,并且继续遇到我不能做的事情,所以我想我可能会遇到我不能做的事情更好的记录MS ListView!)并且有一些东西让我感到难过.
我希望这些项目可以编辑,但我想在编辑开始时,所选文本只是项目文本的一部分而不是全部.
一个例子是在Windows资源管理器中,当文件扩展名可见时,您开始重命名文件 - 选择文件名(蓝色背景)但文件扩展名不是,这样如果用户立即开始输入然后名称将被替换,但扩展名保持原样.
我可以想到解决方法,但想知道是否有办法做到这一点.
通过适当的消息长期拖网,答案是......
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);
Run Code Online (Sandbox Code Playgroud)
这正是我所追求的.感谢其他响应者花时间回答.