ComboBox下拉列表的问题

wei_as 2006-08-22 03:20:13
我想在用户点下拉列表的箭头的时候再向该列表中添加项目条,所以再该对象的DropDown写如下程序

private void cboABC_DropDown(object sender, EventArgs e)
{
this.Cursor = Cursors.WaitCursor;

cboABC.Items.Clear();


//向列表添加多个项目 cboABC.Items.Add(ListName);

this.Cursor = Cursors.Default;
}
现在我遇到的问题是,当工程启动后第一次点击下拉箭头后,下拉列表快速闪烁后就消失,第二次点击箭头下拉列表才能正常显示出来。请问是什么原因。

另外:combobox控件如何象在VB中那样设置成用户只能从列表框中已经存在的项选择,不能手工输入内容。




...全文
523 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
Yellow198267 2006-08-25
  • 打赏
  • 举报
回复
可以在鼠标移动到控件上时加载数据
iespace 2006-08-25
  • 打赏
  • 举报
回复
re wei_as(asai)
我是告诉你 在dropdown事件中,系统需要首先绘制下拉列表,接着你去掉数据源,当然会有闪烁。我的建议是在没有绘制下拉列表是(之前),去掉数据源,况且你那样首先还得读数据,读完之后再删除。不知道这样说你还明白不?
wei_as 2006-08-22
  • 打赏
  • 举报
回复
Re:idda(碗掉了,头大个疤)
请看清问题,是两个问题,好不好 。大哥。
idda 2006-08-22
  • 打赏
  • 举报
回复
那就是不要在dropdown里写加载的代码
combobox.DropDownStyle = DropDownList;将不能修改内容
wei_as 2006-08-22
  • 打赏
  • 举报
回复
Re:mrluoluo()
请你来告诉我我换什么方法来实现!!!
mrluoluo 2006-08-22
  • 打赏
  • 举报
回复
晕...楼主的方法不行嘛,就得换种办法来实现了,干嘛钻牛角尖?反正只要能实现同样的效果,不就行了?真搞不懂,死脑筋!
feesuo 2006-08-22
  • 打赏
  • 举报
回复
dreamdlm() 說的完全正確
wei_as 2006-08-22
  • 打赏
  • 举报
回复
Re: lookatliu(独孤常败)
我在取数据,因为网络的原因有点慢。

另外如果我在处理完后加个 MessageBox,那么也会正常显示。÷
真是奇怪啊!!!

lookatliu 2006-08-22
  • 打赏
  • 举报
回复
你读取数据是在什么时候做的阿
wei_as 2006-08-22
  • 打赏
  • 举报
回复
我刚才又试验了一下,发现问题出现的原因了

private void cboABC_DropDown(object sender, EventArgs e)
{
this.Cursor = Cursors.WaitCursor;

//加一段处理
for (long i = 1; i < 800000000; i++)
{
abc = i;
}
//

cboABC.Items.Clear();


//向列表添加多个项目 cboABC.Items.Add(ListName);

this.Cursor = Cursors.Default;
}

如果在添加项之前不加
for (long i = 1; i < 800000000; i++)
{
abc = i;
}
这段,那么下拉列表的值可以显示出来。
如果加了,那么下拉列表第一次出来会闪一下马上没了,如果把800000000改下,一切又正常。

问题是我在添加列表前取数据需要很长时间,所以问题依旧没有解决。
大家继续

Re:jack_man_(我的偶像是:)
你的办法我试过还是不行。

Re:iespace(iespace)
请看清楚,我是写在DropDown事件中
landy_shasha 2006-08-22
  • 打赏
  • 举报
回复
up
iespace 2006-08-22
  • 打赏
  • 举报
回复
combobox事件顺序DropDown先与Click,因此你可以在DropDown事件中处理,这样combobox不必绘制下拉列表,自然不会重新绘制。
jack_man_ 2006-08-22
  • 打赏
  • 举报
回复
combobox.DropDownStyle = DropDownList;
wei_as 2006-08-22
  • 打赏
  • 举报
回复
cboABC.Refresh();还是不行。
再顶,大家想个好的解决办法呀!!
luozhongyin 2006-08-22
  • 打赏
  • 举报
回复
我也遇到过这样的问题
livode 2006-08-22
  • 打赏
  • 举报
回复
加一句cboABC.refresh();看看
livode 2006-08-22
  • 打赏
  • 举报
回复
你是加载完成数据以后没有刷新下拉列表框,自然要等到下一次点的时候才显示出来
wei_as 2006-08-22
  • 打赏
  • 举报
回复
因为这个列表框中的值不是必须的,而且添加起来也有一些慢,所以不想在加载页面的时候添加数据。
还有什么别的方法,能让我再添加好列表后再强制一下显示下拉列表框!
lovvver 2006-08-22
  • 打赏
  • 举报
回复
combobox控件如何象在VB中那样设置成用户只能从列表框中已经存在的项选择,不能手工输入内容。
========================
combobox.DropDownStyle = DropDownList;



-------------------------
www.notsoft.cn
dreamdlm 2006-08-22
  • 打赏
  • 举报
回复
当然会没啊,因为当你第一次点击需要加载数据嘛,所以第一次点后肯定是空值,再次点的时候才会有值,我建议在页面加载的时候给combobox附值

110,567

社区成员

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

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

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