(100分)自定义控件的问题(类似于浏览器导航栏)

tianmingl 2008-09-04 11:12:21
自己做了一个类似于浏览器导航栏的控件,用combobox和listbox组合而成的,(listbox放在一个无边框Form中),实现的功能是挡在combobox里面输入文本时,弹出listbox窗口,显示与输入文本相匹配的项。
现在的问题是,当我输入文本时,弹出listboxForm提示,输入焦点在文本框中,此时,我拖动主程序的标题栏,listboxForm无法自动消失,输入焦点还是在comboBox里,用各种事件都实现不了,最后想用 DefWndProc(ref System.Windows.Forms.Message m)来截获消息实现,却发现控件内部接收不到主程序的消息(比如鼠标单击之类的)。
没办法了,请高手给指点一下。
...全文
318 32 打赏 收藏 转发到动态 举报
写回复
用AI写文章
32 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
就是你先在自定义控件里定义个方法。你在FormLoad的时候把Form的Move事件的处理委托给该控件的这个方法啊。其实也就是对父窗体的Move事件进行处理。
tianmingl 2008-09-10
  • 打赏
  • 举报
回复
[Quote=引用 27 楼 loucc 的回复:]
事件外加控件重新加载
[/Quote]

啥意思?没看懂,怎么说话都这么简练
tianmingl 2008-09-10
  • 打赏
  • 举报
回复
[Quote=引用 26 楼 freewind0521 的回复:]
用ajax的AutoCompleteExtender控件实现
[/Quote]

兄弟,winform程序,不是web
loucc 2008-09-10
  • 打赏
  • 举报
回复
事件外加控件重新加载
freewind0521 2008-09-10
  • 打赏
  • 举报
回复
用ajax的AutoCompleteExtender控件实现
tianmingl 2008-09-10
  • 打赏
  • 举报
回复
[Quote=引用 23 楼 lye2000000_super 的回复:]
好像要跟Container没关系。应该做不到啊。那你就建立关系就是了。
[/Quote]

建立关系?能否说详细点?
阿里呆呆 2008-09-10
  • 打赏
  • 举报
回复
真够麻烦的!!! 用comboBox就足够了。

当你在comboBox的文本框输入数据时,触发comboBox的TextChanged事件,在这个事件中写下如下代码:

comboBox1.DroppedDown = true; //展开下拉框

至于下拉框显示什么数据,就看你的了。
  • 打赏
  • 举报
回复
好像要跟Container没关系。应该做不到啊。那你就建立关系就是了。
tianmingl 2008-09-10
  • 打赏
  • 举报
回复
算了,揭帖
tianmingl 2008-09-10
  • 打赏
  • 举报
回复
只能这样了,没别的办法了?
tianmingl 2008-09-08
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 jimh 的回复:]
很麻烦,你那个listbox跟form需要做成没焦点的控件,这样操作起来才不存在障碍。
[/Quote]

是啊,请问如何做成没焦点的控件?
jimh 2008-09-08
  • 打赏
  • 举报
回复
很麻烦,你那个listbox跟form需要做成没焦点的控件,这样操作起来才不存在障碍。
蓝色木 2008-09-08
  • 打赏
  • 举报
回复
如果想实现浏览器地址栏的功能只要重写combobox就可以了
tianmingl 2008-09-08
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 pp_shy 的回复:]
引用 9 楼 tianmingl 的回复:

to lizhengnan:我自己定义了一些动态数据的操作,用comboBox自己的AutoCompeleMode等属性完成不了,所以想搞一个自己的控件。


comboBox可以动态绑定数据库的内容来实现的
[/Quote]

我要做的控件其中一个功能是“文本框中输入拼音简码,下拉框中显示与之对应的数据项”,这个combobox自己不能实现吧
pp_shy 2008-09-08
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 tianmingl 的回复:]
to lizhengnan:我自己定义了一些动态数据的操作,用comboBox自己的AutoCompeleMode等属性完成不了,所以想搞一个自己的控件。
[/Quote]

comboBox可以动态绑定数据库的内容来实现的
tianmingl 2008-09-05
  • 打赏
  • 举报
回复
我记得以前好像有人做过类似的控件,不知道思路是什么样的

tianmingl 2008-09-05
  • 打赏
  • 举报
回复
呵呵,那多谢了
tianmingl 2008-09-05
  • 打赏
  • 举报
回复
多来几个人给顶顶,顶也给分
tianmingl 2008-09-04
  • 打赏
  • 举报
回复
to lizhengnan:我自己定义了一些动态数据的操作,用comboBox自己的AutoCompeleMode等属性完成不了,所以想搞一个自己的控件。
tianmingl 2008-09-04
  • 打赏
  • 举报
回复
toTengGaoqing,你的这种方法我试过了可以,但是我希望控件做好后,在调用的时候只做和数据有关的操作,而closeListBox(); 这种方法调用的方式,不太通用。所以想请教下是不是有更好地办法。正像你说的,我不想依赖外面form来控制控件,而是一个封装好的控件,我只要拿来用就可以了
加载更多回复(12)

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧