我尝试过使用Form.KeyPreview但是ListView标签编辑时的字符类型不能使用表单的事件处理程序。我真的想阻止某些字符被添加到标签中。
答案 0 :(得分:3)
这在技术上是可行的,它需要相当讨厌的pinvoke。在BeginLabelEdit事件处理程序中使用SendMessage()来发送LVM_GETEDITCONTROL。返回值是列表视图创建的编辑控件的句柄。然后,您可以将其用于从NativeWindow派生的类的AssignHandle()参数。你可以覆盖谁的WndProc()方法来监听WM_KEYDOWN / UP和WM_CHAR消息。在AfterLabelEdit事件处理程序中调用ReleaseHandle()方法。访问pinvoke.net获取您需要的声明。
简单的Winforms方式是验证输入的标签文本。为AfterLabelEdit事件实现一个处理程序,如果你不满意,请设置e.Cancel = true。