JPR*_*ddy 4 c# textbox autocomplete winforms
我想调整文本框的自动完成下拉框的宽度.我不想调整该文本框的宽度,只想调整自动完成下拉列表.我知道我无法通过使用文本框提供的属性来增加自动完成下拉列表的宽度.
因此,我想知道是否有任何方法可以获取该自动填充框的句柄,然后在不更改文本框宽度的情况下增加该下拉列表的宽度?
如果这是不可能的,那么我想创建自动完成的自定义文本框,在这种情况下如何使用微软提供的现有自动完成功能?有没有办法做到这一点.有没有可用的库?
我不认为你可以使用微软自动完成的实现,它没有调整下拉宽度的选项.
创建一个后台线程,不要打字,并连接组合框或文本框的文本更改事件以更新候选列表(假设自动提示模式,因为你提到了一个下拉列表).如果你有一个组合框,你可以动态添加/删除组合框项目.但是对于下拉列表和文本框项目,您需要一个弹出窗口
可以很容易地显示弹出窗口,但是您不需要使用固定位置,因此当文本框靠近屏幕边缘时它不会离开屏幕.焦点逻辑有点复杂.除非用户按箭头键进行选择,否则您需要将注意力集中在文本框上.
因此,当焦点位于文本框上时:箭头键将焦点移动到弹出窗口,其他键移动到文本框,如果没有由对话框本身处理,则鼠标悬停在弹出窗口上时除了删除键.当焦点在弹出窗口时:箭头键将焦点移动到兄弟候选项或文本框其他键进入文本框,如果没有由对话框本身处理,除了删除键
鼠标点击:关闭弹出窗口或弹出窗口外的弹出窗口.如果单击弹出窗口中的候选项,则更新文本框的值
要使焦点/线程正确,需要花费很多精力.如果您可以负担一些表单空间,则可以向表单添加固定宽度的列表框,例如Visual Studio帮助查看器的索引窗格.