gpt4 book ai didi

C# ListView Label Edit - 控制选中的文本

转载 作者:太空狗 更新时间:2023-10-29 23:00:44 27 4
gpt4 key购买 nike

我正在查看 .Net Framework ListView(我一直在尝试 BetterListView,express 版本,并不断遇到我做不到的事情,所以我想我也可能遇到我能做的事情'不要在有更好记录的 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);

这正是我所追求的。感谢其他回复者抽出时间回答。

关于C# ListView Label Edit - 控制选中的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13930460/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com