c# combobox 和我的自定义控件的区别

2025-05-06 22:48:58
推荐回答(3个)
回答1:

这么长时间没人回答。其实我也搞不定,你的提问自动发到的团队求助了,就给你提个意见吧。
你的自定义控件不可能做出越界效果:

越界效果的控件,基类必须类似弹出式菜单才行,我们知道菜单是可以越界并可以自动适应左右边界的。你的示例图中,combbox具有弹出式菜单特性,所以可以越界,但自定义控件中,基类是listbox,listbox不具有弹出式效果,所以你不可能做出越界效果。

listbox单项多行显示也不好弄,但好像还可以实现,就是必须要自己画,没有属性设置。你可以参看这个网址,试试行不:http://www.csharpwin.com/csharpspace/3607r347.shtml

回答2:

listbox怎么样能让每一个item都能多行显示呢?

每一个item中,数据源比如有三个字段,ds.table[0].rows["ID"]、ds.table[0].rows["DESC"]、ds.table[0].rows["ENDESC"]。
通过重写override oject类的ToString()
public override string ToString()
{
public DataRow Field;
public override string ToString()
{
return Field["ID"].ToString();
}
},在listbox中显示的是ds.table[0].rows["ID"]。其他两个字段ds.table[0].rows["DESC"]、ds.table[0].rows["ENDESC"]。也通过重写ToString()在右边显示出来,或者把三个数据都显示在右边,来把每一个item都能多行显示。
要的是这样的效果吗?

回答3:

越界效果你在创建个窗体设置FixedSingle为none然后坐标什么自己判断,listbox多选有个属性设置下就行,你可以百度下