用户控件中的combo控件调用

qpalzmn001 2010-02-27 02:04:27
我想自己做一个combobox类的用户控件,目的是要实现当我在combobox中输入字符时,自动的根据设置的条件(数据库名,库名,字段名,条件)去数据库中去查找所有相符的内容更新到list上,当list中有内容时就自动的弹出下拉框,因为没做过用户控件,这个list属性的参数在用户控件和里面的combobox控件之间的传递有点搞不定。
不知道是否能设置起来可以在窗体上直接去控制用户控件中的combobox控件,比如UcCombobox.combo1.clear"或UcCombobox.combo1.additem "ABC"等这样的语句,如果可以的话就方便了,就不用去设置用户控件中的属性和事件了。如果不可以,请教一下怎么设置好这个用户控件的list属性,使得我可以在窗体中动态的更新用户控件中的combobox控件的内容。谢谢!
...全文
148 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
qpalzmn001 2010-02-28
  • 打赏
  • 举报
回复
。。。听不大懂,我用的是现成的class重绘的。。。弱弱的问一下,重绘有副作用吗?运行出错就崩溃?会不会占资源啊?现成控件好一点?
qpalzmn001 2010-02-28
  • 打赏
  • 举报
回复
已经搞定,先行结贴,谢谢
附带一个问题:比如combo的list里有三项,分别为 abc,def,ghi。这时如果我在combo中输入de两个字,再点击边上的下拉框,combo会自动的把第二项def选中,并把text中的de两个字符自动的改为第二项def这个内容,有什么办法可以屏蔽这个功能吗?
qpalzmn001 2010-02-28
  • 打赏
  • 举报
回复
昨天忘记结贴了,不好意思,在这里顺便再问一个问题,就是combo的clear时会把text的东西也给清了,有什么办法可以只清list而text不变,我用了removeitem实现是实现了,但是因为我是动态的改变list的内容的,如果list项变少了,窗体上就会出现像是看电影卡帧的现像,就是已经removeitem的项还是出现在窗体上,但实际上它是已经在remove掉了,如果卡帧的地方有别的控件我点一下这个控件就会把这个卡帧给清理掉
threenewbee 2010-02-27
  • 打赏
  • 举报
回复
重绘?这个肯定要Callback的,VB的IDE不支持Callback。。。如果遇到运行时错误就立刻崩溃。

再说你可以用现成的控件,或者用PictureBox模拟。
qpalzmn001 2010-02-27
  • 打赏
  • 举报
回复
我在frmchild中的formunload中把焦点进行了一个转移,问题不出现了。。。。。可能是我用的这个窗体重绘中和这个有冲突,但很奇怪我用同样的方法自己新做了一个只能输入数字的text,就不会出现这个问题,难道就combo有冲突。而且窗体重绘只对 text和command有作用,combo是没用的,如果说text出现这个问题不说的过去,郁闷了。。。
qpalzmn001 2010-02-27
  • 打赏
  • 举报
回复
发现问题了,是我在frmchild中的formload中的一句窗体重绘的原因
Private Sub Form_Load()
MSkinButton.Attach Me.hWnd
End Sub
这句话我是用来把text啊command啊什么的重绘成和QQ一样的,怎么会和这个有关系呢
threenewbee 2010-02-27
  • 打赏
  • 举报
回复
Private Sub MDIForm_Load()
frmchild.show 1
End Sub
qpalzmn001 2010-02-27
  • 打赏
  • 举报
回复
我是在调试程序中进行的工作,没有几句代码。mdi窗体中就一个
Private Sub MDIForm_Load()
frmchild.show
End Sub
没有其他的东西了
threenewbee 2010-02-27
  • 打赏
  • 举报
回复
在程序里面下断点。
看下在哪里会崩溃。


从form_unload开始
qpalzmn001 2010-02-27
  • 打赏
  • 举报
回复
我的combo是在子窗体中的,如果我焦点在combo中,然后我先关闭这个子窗体,再关闭mdi就不会出错,如果直接关闭mdi就会关闭工程,不知是何原因
qpalzmn001 2010-02-27
  • 打赏
  • 举报
回复
多次调试发现,是当我在关闭运行时如果焦点在combo的话就会这样,不然就不会关闭工程
threenewbee 2010-02-27
  • 打赏
  • 举报
回复
工程关闭掉属于一种很严重的错误。。。

检查代码中有没有循环调用,或者调用了API函数,不行重新安装下VB。或者检查杀毒软件冲突。

再不行把你的代码传上来看下。(可以使用一个免费的网络硬盘)
qpalzmn001 2010-02-27
  • 打赏
  • 举报
回复
谢谢3楼,我按照你的方法已经可以实现了,但这样出现的用户控件好像有问题,我在窗体上一使用这个控件后,在运行后只要在这个combo中输入一下东西或click一下,然后再关闭这个运行的话,会连着把工程也关闭掉,运行时如果都不动这个combo的话又是正常的关闭,应该是这个有控件有问题,但控件的代码我都还没改,都是用自动生成的,不知道这是什么问题?或者说有什么办法能调试一下用户控件里的代码吗?就算出错也不要把工程也关闭掉!
threenewbee 2010-02-27
  • 打赏
  • 举报
回复
引用 4 楼 zouyong0929 的回复:
vb 里的 标准控件 combobox 后期排序怎么搞。

sort属性。
ZOUYONG0929 2010-02-27
  • 打赏
  • 举报
回复
vb 里的 标准控件 combobox 后期排序怎么搞。
threenewbee 2010-02-27
  • 打赏
  • 举报
回复
可以。

VB6内置一个用户控件向导,可以映射属性的。
参见 MSDN - Visual Basic - 程序员指南 - 用部件编程。
luofenghen 2010-02-27
  • 打赏
  • 举报
回复
接口写好就行了

回复内容太短了!回复内容太短了!回复内容太短了!回复内容太短了!
ZOUYONG0929 2010-02-27
  • 打赏
  • 举报
回复
关注一下先!
回复内容太短了!
回复内容太短了!
回复内容太短了!
回复内容太短了!

1,453

社区成员

发帖
与我相关
我的任务
社区描述
VB 控件
社区管理员
  • 控件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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