扩展WinForm的ComboBox

摘要:
个人认为winform的combobox不是那么的好用,所以自己扩展了一下。重新定义Items属性,并且支持树结构。为每项加入了CheckBox状态。丰富的列表项类ListItem。效果如图:代码清单:{[Designer]publicclassComboBox:System.Windows.Forms.ComboBox{//FieldsprivateboolblnIsChange=false;privateintm_ImageIndex=-1;privateImageListm_ImageList;privateListItemCollectionm_items;privateobjectobjSource;privateColorm_ItemHoverBackColor;privateColorm_ItemHoverGradientBackColor=Color.Empty;privateColorm_ItemHoverColor;privateintm_Indent=16;privateboolm_CheckBoxes=false;privateboolisUpdate=false;privateComboBoxWindowwnd=null;internalstaticintnextId=0;#regionMethodspublicComboBox(){m_ItemHoverBackColor=SystemColors.Highlight;m_ItemHoverColor=SystemColors.HighlightText;base.Sorted=false;}//////绑定数据。null:drowTmp[base.ValueMember].ToString();ListItemitem=newListItem;this.m_items.Add;}break;}}}}//锁定更新publicnewvoidBeginUpdate(){base.BeginUpdate();isUpdate=true;}//解除更新publicnewvoidEndUpdate(){InsertItem;base.EndUpdate();isUpdate=false;}//绘制项protectedoverridevoidOnDrawItem{ifreturn;Rectangletrect=newRectangle,crect=newRectangle;ListItemitem=getItem;ifreturn;boolisEdit===DrawItemState.ComboBoxEdit;if//复选框的区域{crect=newRectangle;ifcrect.Offset(2,0);}else{crect.X=m_Indent*item.level+2;}//ifDrawBackground;//else//DrawBackground;Rectangleirect=newRectangle;if(ImageList!=-1)//画图象{ImagesIcon=ImageList.Images[item.ImageIndex];irect=newRectangle;//图象太大if{irect=newRectangle;}e.Graphics.DrawImage;}trect=newRectangle;if//画复选框{ifitem.checkboxLeft=crect.Left;ControlPaint.DrawCheckBox(e.Graphics,crect,item.Checked?
个人认为winform的combobox不是那么的好用,所以自己扩展了一下。
重新定义Items属性,并且支持树结构。
为每项加入了CheckBox状态。
丰富的列表项类ListItem。
效果如图:扩展WinForm的ComboBox第1张
代码清单:
{
扩展WinForm的ComboBox第2张[Designer(
typeof(ControlDesigner))]
扩展WinForm的ComboBox第2张
publicclassComboBox:System.Windows.Forms.ComboBox
扩展WinForm的ComboBox第4张扩展WinForm的ComboBox第5张
扩展WinForm的ComboBox第6张{
扩展WinForm的ComboBox第2张
//Fields
扩展WinForm的ComboBox第2张
privateboolblnIsChange=false;
扩展WinForm的ComboBox第2张
privateintm_ImageIndex=-1;
扩展WinForm的ComboBox第2张
privateImageListm_ImageList;
扩展WinForm的ComboBox第2张
privateListItemCollectionm_items;
扩展WinForm的ComboBox第2张
privateobjectobjSource;
扩展WinForm的ComboBox第2张
privateColorm_ItemHoverBackColor;
扩展WinForm的ComboBox第2张
privateColorm_ItemHoverGradientBackColor=Color.Empty;
扩展WinForm的ComboBox第2张
privateColorm_ItemHoverColor;
扩展WinForm的ComboBox第2张
privateintm_Indent=16;
扩展WinForm的ComboBox第2张
privateboolm_CheckBoxes=false;
扩展WinForm的ComboBox第2张
privateboolisUpdate=false;
扩展WinForm的ComboBox第2张
privateComboBoxWindowwnd=null;
扩展WinForm的ComboBox第2张
internalstaticintnextId=0;
扩展WinForm的ComboBox第2张
扩展WinForm的ComboBox第5张扩展WinForm的ComboBox第4张
#regionMethods
扩展WinForm的ComboBox第2张
publicComboBox()
扩展WinForm的ComboBox第4张扩展WinForm的ComboBox第5张
扩展WinForm的ComboBox第6张{
扩展WinForm的ComboBox第2张m_ItemHoverBackColor
=SystemColors.Highlight;
扩展WinForm的ComboBox第2张m_ItemHoverColor
=SystemColors.HighlightText;
扩展WinForm的ComboBox第2张
base.Sorted=false;
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
///<summary>
扩展WinForm的ComboBox第2张
///绑定数据。
扩展WinForm的ComboBox第31张
///</summary>

扩展WinForm的ComboBox第2张publicvoidDataBind()
扩展WinForm的ComboBox第4张扩展WinForm的ComboBox第5张
扩展WinForm的ComboBox第6张{
扩展WinForm的ComboBox第2张
if((this.DataSource!=null)&&(base.DisplayMember!=null))
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张
switch(this.DataSource.GetType().Name)
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张
case"DataTable":
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张DataTabledtblTmp
=(DataTable)this.DataSource;
扩展WinForm的ComboBox第2张
foreach(DataRowdrowTmpindtblTmp.Rows)
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张
stringstrText=drowTmp[base.DisplayMember].ToString();
扩展WinForm的ComboBox第2张
stringstrValue=(base.ValueMember==null)?null:drowTmp[base.ValueMember].ToString();
扩展WinForm的ComboBox第2张ListItemitem
=newListItem(strText,strValue,this.ImageIndex);
扩展WinForm的ComboBox第2张
this.m_items.Add(item);
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
break;
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
扩展WinForm的ComboBox第2张
//锁定更新
扩展WinForm的ComboBox第2张
publicnewvoidBeginUpdate()
扩展WinForm的ComboBox第4张扩展WinForm的ComboBox第5张
扩展WinForm的ComboBox第6张{
扩展WinForm的ComboBox第2张
base.BeginUpdate();
扩展WinForm的ComboBox第2张isUpdate
=true;
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
扩展WinForm的ComboBox第2张
//解除更新
扩展WinForm的ComboBox第2张
publicnewvoidEndUpdate()
扩展WinForm的ComboBox第4张扩展WinForm的ComboBox第5张
扩展WinForm的ComboBox第6张{
扩展WinForm的ComboBox第2张InsertItem(m_items);
扩展WinForm的ComboBox第2张
base.EndUpdate();
扩展WinForm的ComboBox第2张isUpdate
=false;
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
扩展WinForm的ComboBox第2张
//绘制项
扩展WinForm的ComboBox第2张
protectedoverridevoidOnDrawItem(DrawItemEventArgse)
扩展WinForm的ComboBox第4张扩展WinForm的ComboBox第5张
扩展WinForm的ComboBox第6张{
扩展WinForm的ComboBox第2张
if(e.Index==-1)return;
扩展WinForm的ComboBox第2张Rectangletrect
=newRectangle(0,0,0,0),crect=newRectangle(0,0,0,0);
扩展WinForm的ComboBox第2张ListItemitem
=getItem(e.Index);
扩展WinForm的ComboBox第2张
if(item==null)return;
扩展WinForm的ComboBox第2张
扩展WinForm的ComboBox第2张
boolisEdit=(e.State&DrawItemState.ComboBoxEdit)==DrawItemState.ComboBoxEdit;
扩展WinForm的ComboBox第2张
扩展WinForm的ComboBox第2张
if(m_CheckBoxes)//复选框的区域
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张crect
=newRectangle(m_Indent*item.level,e.Bounds.Top+((e.Bounds.Height-16)/2),16,16);
扩展WinForm的ComboBox第2张
if(isEdit)
扩展WinForm的ComboBox第2张crect.Offset(
2,0);
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
else
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张crect.X
=m_Indent*item.level+2;
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
//if(isEdit)
扩展WinForm的ComboBox第2张
DrawBackground(e,e.Bounds,item);
扩展WinForm的ComboBox第2张
//else
扩展WinForm的ComboBox第2张
//DrawBackground(e,newRectangle(crect.Left-1,e.Bounds.Top,e.Bounds.Width-crect.Left+1,e.Bounds.Height),item);
扩展WinForm的ComboBox第2张
Rectangleirect=newRectangle(crect.Right,0,0,0);
扩展WinForm的ComboBox第2张
if(ImageList!=null&&item.ImageIndex!=-1)//画图象
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张ImagesIcon
=ImageList.Images[item.ImageIndex];
扩展WinForm的ComboBox第2张irect
=newRectangle(crect.Right,e.Bounds.Top+((e.Bounds.Height-sIcon.Height)/2),sIcon.Width,sIcon.Height);
扩展WinForm的ComboBox第2张
//图象太大
扩展WinForm的ComboBox第2张
if(irect.Height>e.Bounds.Height)
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张irect
=newRectangle(crect.Right,e.Bounds.Top,e.Bounds.Height,e.Bounds.Height);
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张e.Graphics.DrawImage(sIcon,irect);
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张trect
=newRectangle(irect.Right,e.Bounds.Top,e.Bounds.Width-irect.Width,e.Bounds.Height);
扩展WinForm的ComboBox第2张
if(m_CheckBoxes)//画复选框
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张
if(item.checkboxLeft==-1)
扩展WinForm的ComboBox第2张item.checkboxLeft
=crect.Left;
扩展WinForm的ComboBox第2张ControlPaint.DrawCheckBox(e.Graphics,crect,item.Checked
?ButtonState.Checked|ButtonState.Flat:ButtonState.Flat);
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张DrawString(e,item,trect);
//输出文本
扩展WinForm的ComboBox第2张

扩展WinForm的ComboBox第2张e.Graphics.Dispose();
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
扩展WinForm的ComboBox第2张
//重设项大小
扩展WinForm的ComboBox第2张
protectedoverridevoidOnMeasureItem(MeasureItemEventArgse)
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张
base.OnMeasureItem(e);
扩展WinForm的ComboBox第2张
if(this.ImageList!=null)
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张e.ItemHeight
=this.ImageList.ImageSize.Height;
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
扩展WinForm的ComboBox第2张
protectedoverridevoidWndProc(refMessagem)
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张
if(m.Msg==0x134)//WM_CTLCOLORLISTBOX
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张
if(m_CheckBoxes&&wnd==null)
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张wnd
=newComboBoxWindow(base.Items,Handle);//钩子
扩展WinForm的ComboBox第2张
wnd.AssignHandle(m.LParam);
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
elseif(wnd!=null&&m.Msg==0x2)//WM_DESTROY
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张wnd.ReleaseHandle();
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
elseif(m.Msg==0x400+0x105)//自定消息设置checked
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张
intindex=m.WParam.ToInt32();
扩展WinForm的ComboBox第2张ListItemitem
=FindRealListItem(getItem(index));
扩展WinForm的ComboBox第2张
if(item!=null)
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张item.Checked
=!item.Checked;
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
base.WndProc(refm);
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
扩展WinForm的ComboBox第2张
//画背景
扩展WinForm的ComboBox第2张
privatevoidDrawBackground(DrawItemEventArgse,Rectanglerect,ListItemitem)
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张
if((e.State&DrawItemState.Selected)==DrawItemState.Selected)
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张
if(m_ItemHoverGradientBackColor!=Color.Empty)
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张
//渐变
扩展WinForm的ComboBox第2张
Rectangler=newRectangle(rect.Left,rect.Top,rect.Width,rect.Height/2);
扩展WinForm的ComboBox第2张e.Graphics.FillRectangle(
newLinearGradientBrush(r,m_ItemHoverBackColor,m_ItemHoverGradientBackColor,90f),r);
扩展WinForm的ComboBox第2张r
=newRectangle(rect.Left,rect.Top+rect.Height/2,rect.Width,rect.Height/2);
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
if(r.Height%2==0){r.Y-=2;r.Height+=2;}
扩展WinForm的ComboBox第2张e.Graphics.FillRectangle(
newLinearGradientBrush(r,m_ItemHoverBackColor,m_ItemHoverGradientBackColor,270f),r);
扩展WinForm的ComboBox第2张ControlPaint.DrawBorder(e.Graphics,rect,m_ItemHoverGradientBackColor,ButtonBorderStyle.Solid);
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
else
扩展WinForm的ComboBox第2张e.Graphics.FillRectangle(
newSolidBrush(m_ItemHoverBackColor),rect);
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
else
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张e.Graphics.FillRectangle(
newSolidBrush(item.BackColor),rect);
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
扩展WinForm的ComboBox第2张
//画文本
扩展WinForm的ComboBox第2张
privatevoidDrawString(DrawItemEventArgse,ListItemitem,Rectanglerect)
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张StringFormatsf
=newStringFormat();
扩展WinForm的ComboBox第2张sf.LineAlignment
=StringAlignment.Center;
扩展WinForm的ComboBox第2张rect.Offset(
0,1);
扩展WinForm的ComboBox第2张
扩展WinForm的ComboBox第2张SolidBrushsb
=null;
扩展WinForm的ComboBox第2张
if(!item.ForeColor.Equals(SystemColors.WindowText)||m_ItemHoverGradientBackColor!=Color.Empty)
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张sb
=newSolidBrush(item.ForeColor);
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
elseif((e.State&DrawItemState.Selected)==DrawItemState.Selected)
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张sb
=newSolidBrush(m_ItemHoverColor);
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
else
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张sb
=newSolidBrush(SystemColors.WindowText);
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
扩展WinForm的ComboBox第2张e.Graphics.DrawString(item.Text,item.Font,sb,rect,sf);
扩展WinForm的ComboBox第2张sb.Dispose();
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
扩展WinForm的ComboBox第2张
//插入整个根集合
扩展WinForm的ComboBox第2张
privatevoidInsertItem(ListItemCollectionitems)
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张
foreach(ListItemiteminitems)
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张ListItemlit
=item.CloneData();
扩展WinForm的ComboBox第2张lit.Items
=null;
扩展WinForm的ComboBox第2张lit.level
=item.level;
扩展WinForm的ComboBox第2张
if(item.Parent.GetType()==typeof(ListItem))
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张ListItemparent
=(ListItem)item.Parent;
扩展WinForm的ComboBox第2张lit.Parent
=parent;
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
base.Items.Add(lit);
扩展WinForm的ComboBox第2张InsertItem(item.Items);
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
扩展WinForm的ComboBox第2张
//插入新项
扩展WinForm的ComboBox第2张
internalintInsertItem(intindex,ListItemitem,intmethod)
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张
if(isUpdate)return0;
扩展WinForm的ComboBox第2张ListItemlit
=item.CloneData();
扩展WinForm的ComboBox第2张lit.Items
=null;
扩展WinForm的ComboBox第2张lit.level
=item.level;
扩展WinForm的ComboBox第2张
intcount=0;
扩展WinForm的ComboBox第2张
if(item.Parent.GetType()==typeof(ListItem))
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张ListItemparent
=(ListItem)item.Parent;
扩展WinForm的ComboBox第2张
foreach(ListItemlt1inparent.Items)
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张GetItemLocation(lt1.Items,lit,
refcount);
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张lit.Parent
=parent;
扩展WinForm的ComboBox第2张
inti=0;
扩展WinForm的ComboBox第2张
for(;i<base.Items.Count;i++)
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张
if(getItem(i).id==parent.id)
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张
break;
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
base.Items.Insert(i+1+index+count,lit);
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
else
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张
foreach(ListItemlt1in((ComboBox)item.Parent).Items)
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张GetItemLocation(lt1.Items,lit,
refcount);
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
base.Items.Insert(index+count,lit);
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
returnbase.Items.Count-1;
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
扩展WinForm的ComboBox第2张
privatevoidGetItemLocation(ListItemCollectionitems,ListItemowner,refintcount)
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张
foreach(ListItemltinitems)
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张
if(owner.id!=lt.id&&CheckIsInItems(lt.id))
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张count
++;
扩展WinForm的ComboBox第2张GetItemLocation(lt.Items,owner,
refcount);
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
扩展WinForm的ComboBox第2张
privateboolCheckIsInItems(intid)
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张
foreach(objectoinbase.Items)
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张
if(((ListItem)o).id==id)
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张
returntrue;
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
returnfalse;
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
扩展WinForm的ComboBox第2张
internalvoidRemoveItem(ListItemitem)
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张
if(isUpdate)return;
扩展WinForm的ComboBox第2张
intindex=FindItem(item.id);
扩展WinForm的ComboBox第2张
if(index!=-1)
扩展WinForm的ComboBox第2张
base.Items.RemoveAt(index);
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
扩展WinForm的ComboBox第2张
internalvoidClearItem()
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张
base.Items.Clear();
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
扩展WinForm的ComboBox第2张
privateintFindItem(intid)
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张
if(this.DesignMode)return-1;
扩展WinForm的ComboBox第2张
for(inti=0;i<base.Items.Count;i++)
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张
if(getItem(i).id==id)
扩展WinForm的ComboBox第2张
returni;
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
return-1;
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
扩展WinForm的ComboBox第2张
privatevoidFindItem(intid,ListItemitem,refListItemfind)
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张
foreach(objectltinitem.Items)
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张ListItemlt1
=(ListItem)lt;
扩展WinForm的ComboBox第2张
if(lt1.id==id)
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张find
=lt1;
扩展WinForm的ComboBox第2张
break;
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张FindItem(id,lt1,
reffind);
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
扩展WinForm的ComboBox第2张
privatevoidFindCheckedItem(ListItemCollectionitems,refCheckedListItemCollectioncheckeditems)
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张
foreach(objectltinitems)
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张ListItemlt1
=(ListItem)lt;
扩展WinForm的ComboBox第2张
if(lt1.Checked)checkeditems.Add(lt1);
扩展WinForm的ComboBox第2张FindCheckedItem(lt1.Items,
refcheckeditems);
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
扩展WinForm的ComboBox第2张
privateListItemFindRealListItem(ListItemitem)
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张
if(item.Parent==null)//为根节点
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张
foreach(ListItemltinthis.m_items)
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张
if(lt.id==item.id)
扩展WinForm的ComboBox第2张
returnlt;
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
returnnull;
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
else
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张ListItemtemp
=item;
扩展WinForm的ComboBox第2张
while(true)//找到根级
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张
if(temp.Parent==null)break;
扩展WinForm的ComboBox第2张
if(temp.Parent.GetType()==typeof(ComboBox))break;
扩展WinForm的ComboBox第2张temp
=(temp.ParentasListItem);
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张ListItemfind
=null;
扩展WinForm的ComboBox第2张
//找子项里
扩展WinForm的ComboBox第2张
FindItem(item.id,temp,reffind);
扩展WinForm的ComboBox第2张
returnfind;
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
扩展WinForm的ComboBox第2张
internalvoidsetText(intid,stringtext)
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张
intindex=FindItem(id);
扩展WinForm的ComboBox第2张
if(index!=-1)
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张getItem(index).Text
=text;
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
扩展WinForm的ComboBox第2张
internalvoidsetImageIndex(intid,intimageIndex)
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张
intindex=FindItem(id);
扩展WinForm的ComboBox第2张
if(index!=-1)
扩展WinForm的ComboBox第2张getItem(index).ImageIndex
=imageIndex;
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
扩展WinForm的ComboBox第2张
internalvoidsetForeColor(intid,ColorforeColor)
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张
intindex=FindItem(id);
扩展WinForm的ComboBox第2张
if(index!=-1)
扩展WinForm的ComboBox第2张getItem(index).ForeColor
=foreColor;
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
扩展WinForm的ComboBox第2张
internalvoidsetBackColor(intid,ColorbackColor)
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张
intindex=FindItem(id);
扩展WinForm的ComboBox第2张
if(index!=-1)
扩展WinForm的ComboBox第2张getItem(index).BackColor
=backColor;
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
扩展WinForm的ComboBox第2张
internalvoidsetFont(intid,Fontfont)
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张
intindex=FindItem(id);
扩展WinForm的ComboBox第2张
if(index!=-1)
扩展WinForm的ComboBox第2张getItem(index).Font
=font;
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
扩展WinForm的ComboBox第2张
internalvoidsetChecked(intid,boolcheck)
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张
intindex=FindItem(id);
扩展WinForm的ComboBox第2张
if(index!=-1)
扩展WinForm的ComboBox第2张getItem(index).Checked
=check;
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
扩展WinForm的ComboBox第2张
internalvoidsetItem(intid,ListItemitem)
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张
intindex=FindItem(id);
扩展WinForm的ComboBox第2张
if(index!=-1)
扩展WinForm的ComboBox第2张
base.Items[index]=item.CloneData();
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
扩展WinForm的ComboBox第2张
privateListItemgetItem(intindex)
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张
if(index<0||index>base.Items.Count-1)
扩展WinForm的ComboBox第2张
thrownewArgumentNullException("索引值超出集合的范围");
扩展WinForm的ComboBox第2张
return(ListItem)base.Items[index];
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
扩展WinForm的ComboBox第31张
#endregion

扩展WinForm的ComboBox第2张
扩展WinForm的ComboBox第5张扩展WinForm的ComboBox第4张
#regionProperties
扩展WinForm的ComboBox第2张[Category(
"Data"),Description("用于绑定的数据源。")]
扩展WinForm的ComboBox第2张
publicnewobjectDataSource
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张
get
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张
returnthis.objSource;
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
set
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张
this.objSource=value;
扩展WinForm的ComboBox第2张
base.DataSource=null;
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
扩展WinForm的ComboBox第2张[Category(
"Appearance"),
扩展WinForm的ComboBox第2张Editor(
"System.Windows.Forms.Design.ImageIndexEditor,System.Design",typeof(UITypeEditor)),
扩展WinForm的ComboBox第2张TypeConverter(
typeof(ImageIndexConverter)),
扩展WinForm的ComboBox第2张DefaultValue(
-1)]
扩展WinForm的ComboBox第2张
publicintImageIndex
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张
get
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张
returnthis.m_ImageIndex;
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
set
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张
this.m_ImageIndex=value;
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
扩展WinForm的ComboBox第2张[Description(
"组合框中的项的图象所使用的ImageList控件。"),
扩展WinForm的ComboBox第2张Browsable(
true),
扩展WinForm的ComboBox第2张DefaultValue((
string)null)]
扩展WinForm的ComboBox第2张
publicImageListImageList
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张
get
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张
returnthis.m_ImageList;
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
set
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张
this.m_ImageList=value;
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
扩展WinForm的ComboBox第2张[Category(
"Behavior"),
扩展WinForm的ComboBox第2张DesignerSerializationVisibility(DesignerSerializationVisibility.Content),
扩展WinForm的ComboBox第2张Editor(
typeof(CollectionEditor),typeof(UITypeEditor)),
扩展WinForm的ComboBox第2张MergableProperty(
false),
扩展WinForm的ComboBox第2张Description(
"组合框中的项。"),
扩展WinForm的ComboBox第2张DefaultValue((
string)null),
扩展WinForm的ComboBox第2张Localizable(
true)]
扩展WinForm的ComboBox第2张
publicnewListItemCollectionItems
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张
get
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张
if(m_items==null)
扩展WinForm的ComboBox第2张m_items
=newListItemCollection(this,this);
扩展WinForm的ComboBox第2张
returnthis.m_items;
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
扩展WinForm的ComboBox第2张[Browsable(
false)]
扩展WinForm的ComboBox第2张
publicnewListItemSelectedItem
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张
get
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张
if(this.SelectedIndex==-1)
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张
returnnull;
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
returnFindRealListItem(getItem(this.SelectedIndex));
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
扩展WinForm的ComboBox第2张[Browsable(
false)]
扩展WinForm的ComboBox第2张
publicnewstringSelectedText
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张
get
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张
if(this.SelectedIndex==-1)
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张
returnnull;
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
returnSelectedItem.Text;
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
set
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张
if((this.SelectedIndex!=-1)&&!this.blnIsChange)
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张SelectedItem.Text
=value;
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
扩展WinForm的ComboBox第2张[Browsable(
false)]
扩展WinForm的ComboBox第2张
publicnewobjectSelectedValue
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张
get
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张
if(this.SelectedIndex==-1)
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张
returnnull;
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
returnSelectedItem.Value;
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
set
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张
if(this.SelectedIndex!=-1)
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张SelectedItem.Value
=value;
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
扩展WinForm的ComboBox第2张[Browsable(
false)]
扩展WinForm的ComboBox第2张
publicCheckedListItemCollectionCheckedItems
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
get{
扩展WinForm的ComboBox第2张CheckedListItemCollectioncheckitems
=newCheckedListItemCollection();
扩展WinForm的ComboBox第2张
if(m_CheckBoxes)
扩展WinForm的ComboBox第2张FindCheckedItem(
this.m_items,refcheckitems);
扩展WinForm的ComboBox第2张
returncheckitems;
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
扩展WinForm的ComboBox第2张[Category(
"Appearance"),
扩展WinForm的ComboBox第2张Description(
"获取或设置鼠标移上列表项时的前景景颜色。")]
扩展WinForm的ComboBox第2张
publicColorItemHoverColor
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
get{returnm_ItemHoverColor;}
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
set{m_ItemHoverColor=value;}
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
扩展WinForm的ComboBox第2张[Category(
"Appearance"),
扩展WinForm的ComboBox第2张Description(
"获取或设置鼠标移上列表项时的背景颜色。")]
扩展WinForm的ComboBox第2张
publicColorItemHoverBackColor
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
get{returnm_ItemHoverBackColor;}
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
set{m_ItemHoverBackColor=value;}
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
扩展WinForm的ComboBox第2张[Category(
"Appearance"),
扩展WinForm的ComboBox第2张DefaultValue((
string)null),
扩展WinForm的ComboBox第2张Description(
"获取或设置鼠标移上列表项时的背景颜色。")]
扩展WinForm的ComboBox第2张
publicColorItemHoverGradientBackColor
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
get{returnm_ItemHoverGradientBackColor;}
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
set{m_ItemHoverGradientBackColor=value;}
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
扩展WinForm的ComboBox第2张[DefaultValue(
16),
扩展WinForm的ComboBox第2张Description(
"子节点的缩进宽度。")]
扩展WinForm的ComboBox第2张
publicintIndent
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
get{returnm_Indent;}
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
set{m_Indent=value;}
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
扩展WinForm的ComboBox第2张[DefaultValue(
false),
扩展WinForm的ComboBox第2张Description(
"是否显示复选框。")]
扩展WinForm的ComboBox第2张
publicboolCheckBoxes
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
get{returnm_CheckBoxes;}
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
set{m_CheckBoxes=value;}
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
扩展WinForm的ComboBox第31张
#endregion

扩展WinForm的ComboBox第2张
扩展WinForm的ComboBox第5张扩展WinForm的ComboBox第4张
#regionListItemCollection
扩展WinForm的ComboBox第2张
publicclassListItemCollection:IList,ICollection,IEnumerable
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张
privateComboBoxowner;
扩展WinForm的ComboBox第2张
privateobjectparent;
扩展WinForm的ComboBox第2张
privateArrayListitems;
扩展WinForm的ComboBox第2张
privateboolinserted=true;
扩展WinForm的ComboBox第2张
internalbytelevel=0;
扩展WinForm的ComboBox第2张
扩展WinForm的ComboBox第2张
//Methods
扩展WinForm的ComboBox第2张
internalListItemCollection(ComboBoxcomboBox,objectparent)
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张items
=newArrayList();
扩展WinForm的ComboBox第2张
this.owner=comboBox;
扩展WinForm的ComboBox第2张
this.parent=parent;
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
扩展WinForm的ComboBox第2张
publicListItemCollection()
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张items
=newArrayList();
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
扩展WinForm的ComboBox第2张
internalListItemCollection(boolinserted)
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张items
=newArrayList();
扩展WinForm的ComboBox第2张
this.inserted=inserted;
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
扩展WinForm的ComboBox第2张
publicListItemthis[intindex]
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
get{
扩展WinForm的ComboBox第2张
if(index<0||index>items.Count-1)
扩展WinForm的ComboBox第2张
thrownewArgumentNullException("索引值超出集合的范围");
扩展WinForm的ComboBox第2张
returnitems[index]asListItem;
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
set
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张
if(index<0||index>items.Count-1)
扩展WinForm的ComboBox第2张
thrownewArgumentNullException("索引值超出集合的范围");
扩展WinForm的ComboBox第2张ListItemitem
=(ListItem)items[index];
扩展WinForm的ComboBox第2张value.id
=item.id;
扩展WinForm的ComboBox第2张value.level
=item.level;
扩展WinForm的ComboBox第2张items[index]
=value;
扩展WinForm的ComboBox第2张
if(owner!=null)owner.setItem(value.id,value);
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
扩展WinForm的ComboBox第2张
publicintCount
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
get{returnitems.Count;}
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
扩展WinForm的ComboBox第2张
publicintAdd(stringText)
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张
returnInsert(-1,newListItem(Text));
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
扩展WinForm的ComboBox第2张
publicintAdd(stringText,objectValue)
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张
returnInsert(-1,newListItem(Text,Value));
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
扩展WinForm的ComboBox第2张
publicintAdd(stringText,intImageIndex)
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张
returnInsert(-1,newListItem(Text,ImageIndex));
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
扩展WinForm的ComboBox第2张
publicintAdd(stringText,objectValue,intImageIndex)
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张
returnInsert(-1,newListItem(Text,Value,ImageIndex));
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
扩展WinForm的ComboBox第2张
publicintAdd(ListItemitem)
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张
returnInsert(-1,item);
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
扩展WinForm的ComboBox第2张
publicvoidAddRange(ListItem[]items)
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张
for(IEnumeratore=items.GetEnumerator();e.MoveNext();)
扩展WinForm的ComboBox第2张Insert(
-1,(ListItem)e.Current);
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
扩展WinForm的ComboBox第2张
publicintInsert(intindex,ListItemitem)
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张
intret=0;
扩展WinForm的ComboBox第2张
if(inserted)
扩展WinForm的ComboBox第2张item.level
=level;
扩展WinForm的ComboBox第2张
intm=1;
扩展WinForm的ComboBox第2张
if(index==-1)
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张index
=this.Count;
扩展WinForm的ComboBox第2张m
=0;//为添加
扩展WinForm的ComboBox第31张
}

扩展WinForm的ComboBox第2张item.Host(owner);
扩展WinForm的ComboBox第2张item.Parent
=parent;
扩展WinForm的ComboBox第2张item.Text
=(item.Text.Length==0)?item.GetType().Name:item.Text;
扩展WinForm的ComboBox第2张items.Insert(index,item);
扩展WinForm的ComboBox第2张
if(inserted)
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张item.id
=ComboBox.nextId++;
扩展WinForm的ComboBox第2张
if(owner!=null)
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张ret
=item.Index=owner.InsertItem(index,item,m);
扩展WinForm的ComboBox第2张AddItem(item,item.Items);
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
returnret;
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
扩展WinForm的ComboBox第2张
internalvoidHost(ComboBoxcomboBox,objectparent)
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张
this.owner=comboBox;
扩展WinForm的ComboBox第2张
this.parent=parent;
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
扩展WinForm的ComboBox第2张
privatevoidAddItem(ListItemparent,ListItemCollectionitems)
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张
inti=0;
扩展WinForm的ComboBox第2张
foreach(ListItemiteminitems)
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张item.Host(owner);
扩展WinForm的ComboBox第2张item.Parent
=parent;
扩展WinForm的ComboBox第2张item.level
=items.level;
扩展WinForm的ComboBox第2张item.Index
=owner.InsertItem(i,item,0);
扩展WinForm的ComboBox第2张i
++;
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
扩展WinForm的ComboBox第2张
publicvoidRemove(ListItemitem)
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张
if(owner!=null)owner.RemoveItem(item);
扩展WinForm的ComboBox第2张items.Remove(item);
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
扩展WinForm的ComboBox第2张
publicvoidRemoveAt(intindex)
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张
if(owner!=null)owner.RemoveItem(this[index]);
扩展WinForm的ComboBox第2张items.RemoveAt(index);
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
扩展WinForm的ComboBox第2张
publicintIndexOf(ListItemitem)
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张
returnitems.IndexOf(item);
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
扩展WinForm的ComboBox第2张
publicboolContains(ListItemitem)
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张
returnitems.Contains(item);
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
扩展WinForm的ComboBox第2张
publicvoidClear()
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张items.Clear();
扩展WinForm的ComboBox第2张owner.ClearItem();
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
扩展WinForm的ComboBox第2张
publicIEnumeratorGetEnumerator()
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张
returnitems.GetEnumerator();
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
扩展WinForm的ComboBox第897张扩展WinForm的ComboBox第4张
ICollectionMembersICollectionMembers
扩展WinForm的ComboBox第2张
voidICollection.CopyTo(Arrayarray,intindex)
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张
for(IEnumeratore=this.GetEnumerator();e.MoveNext();)
扩展WinForm的ComboBox第2张array.SetValue(e.Current,index
++);
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
扩展WinForm的ComboBox第2张
boolICollection.IsSynchronized
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
get{returnfalse;}
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
扩展WinForm的ComboBox第2张
objectICollection.SyncRoot
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
get{returnthis;}
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第31张
#endregion

扩展WinForm的ComboBox第2张
扩展WinForm的ComboBox第897张扩展WinForm的ComboBox第4张
IListMembersIListMembers
扩展WinForm的ComboBox第2张
objectIList.this[intindex]
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
get{returnthis[index];}
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
set{this[index]=(ListItem)value;}
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
扩展WinForm的ComboBox第2张
boolIList.Contains(objectitem)
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张
returnContains((ListItem)item);
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
扩展WinForm的ComboBox第2张
intIList.Add(objectitem)
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张
returnAdd((ListItem)item);
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
扩展WinForm的ComboBox第2张
boolIList.IsFixedSize
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
get{returnfalse;}
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
扩展WinForm的ComboBox第2张
intIList.IndexOf(objectitem)
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张
returnIndexOf((ListItem)item);
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
扩展WinForm的ComboBox第2张
voidIList.Insert(intindex,objectitem)
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张Insert(index,(ListItem)item);
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
扩展WinForm的ComboBox第2张
voidIList.Remove(objectitem)
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张Remove((ListItem)item);
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
扩展WinForm的ComboBox第2张
voidIList.RemoveAt(intindex)
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张RemoveAt(index);
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
扩展WinForm的ComboBox第2张
voidIList.Clear()
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张Clear();
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
扩展WinForm的ComboBox第2张
boolIList.IsReadOnly
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
get{returnfalse;}
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第31张
#endregion

扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
扩展WinForm的ComboBox第31张
#endregion

扩展WinForm的ComboBox第2张
扩展WinForm的ComboBox第897张扩展WinForm的ComboBox第4张
CheckedListItemCollectionCheckedListItemCollection
扩展WinForm的ComboBox第2张
publicclassCheckedListItemCollection:CollectionBase
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张
publicvoidAdd(ListItemitem)
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张List.Add(item);
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
扩展WinForm的ComboBox第2张
publicvoidRemove(ListItemitem)
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张List.Remove(item);
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
扩展WinForm的ComboBox第2张
publicListItemthis[intindex]
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
get{
扩展WinForm的ComboBox第2张
if(index<0||index>List.Count-1)
扩展WinForm的ComboBox第2张
thrownewArgumentNullException("索引值超出集合的范围");
扩展WinForm的ComboBox第2张
returnList[index]asListItem;
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第31张
#endregion
扩展WinForm的ComboBox第2张
扩展WinForm的ComboBox第897张扩展WinForm的ComboBox第4张
ComboBoxWindowComboBoxWindow
扩展WinForm的ComboBox第2张
internalclassComboBoxWindow:NativeWindow
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张
privateSystem.Windows.Forms.ComboBox.ObjectCollectionitems;
扩展WinForm的ComboBox第2张
privateIntPtrhandle=IntPtr.Zero;
扩展WinForm的ComboBox第2张
扩展WinForm的ComboBox第2张
internalComboBoxWindow(System.Windows.Forms.ComboBox.ObjectCollectionitems,IntPtrhandle)
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张
this.items=items;
扩展WinForm的ComboBox第2张
this.handle=handle;
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
扩展WinForm的ComboBox第2张
protectedoverridevoidWndProc(refMessagem)
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张
if(m.Msg==0x201)//WM_LBUTTONDOWN
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张Win32.RECTrect
=newWin32.RECT();
扩展WinForm的ComboBox第2张Win32.GetClientRect(m.HWnd,
refrect);
扩展WinForm的ComboBox第2张Win32.POINTAPIpt
=newWin32.POINTAPI();
扩展WinForm的ComboBox第2张pt.x
=Win32.LOWORD(m.LParam.ToInt32());
扩展WinForm的ComboBox第2张pt.y
=Win32.HIWORD(m.LParam.ToInt32());
扩展WinForm的ComboBox第2张
//如果在区域内
扩展WinForm的ComboBox第2张
if(newRectangle(rect.Left,rect.Top,rect.Left+rect.Right,rect.Top+rect.Bottom).Contains(newPoint(pt.x,pt.y)))
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张
intnItemHeight=Win32.SendMessage(m.HWnd,0x1A1,0,0);//LB_GETITEMHEIGHT
扩展WinForm的ComboBox第2张
//获得顶部项的索引
扩展WinForm的ComboBox第2张
intnTopIndex=Win32.SendMessage(m.HWnd,0x18E,0,0);//LB_GETTOPINDEX
扩展WinForm的ComboBox第2张
intnIndex=nTopIndex+pt.y/nItemHeight;
扩展WinForm的ComboBox第2张
if(items.Count==0)
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张
base.WndProc(refm);
扩展WinForm的ComboBox第2张
return;
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
//判断是否在复选框处
扩展WinForm的ComboBox第2张
if(pt.x>((ListItem)items[nIndex]).checkboxLeft&&pt.x<((ListItem)items[nIndex]).checkboxLeft+16)
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张Win32.RECTre
=newWin32.RECT();
扩展WinForm的ComboBox第2张
//取位置
扩展WinForm的ComboBox第2张
Win32.SendMessage(m.HWnd,0x198,nIndex,refre);//LB_GETITEMRECT
扩展WinForm的ComboBox第2张
//重画
扩展WinForm的ComboBox第2张
Win32.InvalidateRect(m.HWnd,re,0);
扩展WinForm的ComboBox第2张
//发送自定消息勾选复选框
扩展WinForm的ComboBox第2张
Win32.SendMessage(handle,0x400+0x105,nIndex,0);
扩展WinForm的ComboBox第2张
return;
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
base.WndProc(refm);
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第31张
#endregion
扩展WinForm的ComboBox第2张
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第1083张}

扩展WinForm的ComboBox第1084张

扩展WinForm的ComboBox第6张{
扩展WinForm的ComboBox第2张
internalsealedclassListItemConverter:ExpandableObjectConverter
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张
publicoverrideboolCanConvertTo(ITypeDescriptorContextcontext,TypedestinationType)
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张
if(destinationType==typeof(System.ComponentModel.Design.Serialization.InstanceDescriptor))
扩展WinForm的ComboBox第2张
returntrue;
扩展WinForm的ComboBox第2张
else
扩展WinForm的ComboBox第2张
returnbase.CanConvertTo(context,destinationType);
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
扩展WinForm的ComboBox第2张
publicoverrideobjectConvertTo(ITypeDescriptorContextcontext,System.Globalization.CultureInfoculture,objectvalue,TypedestinationType)
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张
if(destinationType==typeof(System.ComponentModel.Design.Serialization.InstanceDescriptor))
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张TypevalueType
=value.GetType();
扩展WinForm的ComboBox第2张ConstructorInfoci
=valueType.GetConstructor(System.Type.EmptyTypes);
扩展WinForm的ComboBox第2张ListItemitem
=(ListItem)value;
扩展WinForm的ComboBox第2张
returnnewInstanceDescriptor(ci,null,false);
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
else
扩展WinForm的ComboBox第2张
returnbase.ConvertTo(context,culture,value,destinationType);
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第1083张}

扩展WinForm的ComboBox第1084张

扩展WinForm的ComboBox第6张{
扩展WinForm的ComboBox第2张
internalclassWin32
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张[DllImport(
"user32",EntryPoint="GetClientRect")]
扩展WinForm的ComboBox第2张
publicstaticexternintGetClientRect(
扩展WinForm的ComboBox第2张IntPtrhwnd,
扩展WinForm的ComboBox第2张
refRECTlpRect
扩展WinForm的ComboBox第2张);
扩展WinForm的ComboBox第2张
扩展WinForm的ComboBox第2张[DllImport(
"user32",EntryPoint="GetWindowRect")]
扩展WinForm的ComboBox第2张
publicstaticexternintGetWindowRect(
扩展WinForm的ComboBox第2张IntPtrhwnd,
扩展WinForm的ComboBox第2张
refRECTlpRect
扩展WinForm的ComboBox第2张);
扩展WinForm的ComboBox第2张
扩展WinForm的ComboBox第2张[DllImport(
"user32",EntryPoint="PtInRect")]
扩展WinForm的ComboBox第2张
publicstaticexternintPtInRect(
扩展WinForm的ComboBox第2张
refRECTlpRect,
扩展WinForm的ComboBox第2张
refPOINTAPIpt
扩展WinForm的ComboBox第2张);
扩展WinForm的ComboBox第2张
扩展WinForm的ComboBox第2张[DllImport(
"user32",EntryPoint="SendMessage")]
扩展WinForm的ComboBox第2张
publicstaticexternintSendMessage(
扩展WinForm的ComboBox第2张IntPtrhwnd,
扩展WinForm的ComboBox第2张
intwMsg,
扩展WinForm的ComboBox第2张
intwParam,
扩展WinForm的ComboBox第2张
intlParam
扩展WinForm的ComboBox第2张);
扩展WinForm的ComboBox第2张
扩展WinForm的ComboBox第2张[DllImport(
"user32",EntryPoint="SendMessage")]
扩展WinForm的ComboBox第2张
publicstaticexternintSendMessage(
扩展WinForm的ComboBox第2张IntPtrhwnd,
扩展WinForm的ComboBox第2张
intwMsg,
扩展WinForm的ComboBox第2张
intwParam,
扩展WinForm的ComboBox第2张
refRECTrect
扩展WinForm的ComboBox第2张);
扩展WinForm的ComboBox第2张
扩展WinForm的ComboBox第2张[DllImport(
"user32",EntryPoint="InvalidateRect")]
扩展WinForm的ComboBox第2张
publicstaticexternintInvalidateRect(
扩展WinForm的ComboBox第2张IntPtrhwnd,
扩展WinForm的ComboBox第2张RECTlpRect,
扩展WinForm的ComboBox第2张
intbErase
扩展WinForm的ComboBox第2张);
扩展WinForm的ComboBox第2张
扩展WinForm的ComboBox第2张[StructLayout(LayoutKind.Sequential)]
扩展WinForm的ComboBox第2张
publicstructRECT
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张
publicintLeft;
扩展WinForm的ComboBox第2张
publicintTop;
扩展WinForm的ComboBox第2张
publicintRight;
扩展WinForm的ComboBox第2张
publicintBottom;
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张[StructLayout(LayoutKind.Sequential)]
扩展WinForm的ComboBox第2张
publicstructPOINTAPI
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张
publicintx;
扩展WinForm的ComboBox第2张
publicinty;
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
扩展WinForm的ComboBox第2张
publicstaticintHIWORD(intlparam)
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张
return((lparam>>16)&0xffff);
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
扩展WinForm的ComboBox第2张
publicstaticintLOWORD(intlparam)
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张
return(lparam&0xffff);
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
扩展WinForm的ComboBox第2张
publicstaticintMakeLParam(intLoWord,intHiWord)
扩展WinForm的ComboBox第33张扩展WinForm的ComboBox第5张
{
扩展WinForm的ComboBox第2张
return(HiWord<<16)|(LoWord&0xffff);
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第2张
扩展WinForm的ComboBox第2张
扩展WinForm的ComboBox第31张}

扩展WinForm的ComboBox第1083张}

扩展WinForm的ComboBox第1084张

免责声明:文章转载自《扩展WinForm的ComboBox》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇C#实现局部峰值查找,功能对应Matlab中的findpeaks.m记一次线上环境的内存溢出(java.lang.OutOfMemoryError)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

winform窗体 【打开多个窗体、窗体之间传值、打开唯一窗体】

1、打开多个窗体 2、窗体之间的传值 3打开唯一窗体 Form1中btn1按钮点击show出Form2,当Form2处于开启状态时,再次点击btn1不会继续弹出窗体,而是将焦点定位至已开启的Form2上;当Form2关闭后,再次点击btn1则会show出一个新的Form2; Form1: //创建一个全局集合,用来放置已经show出的窗体对象 L...

获取Android设备的方向 -- gsensor

http://www.cnblogs.com/bpasser/archive/2011/10/17/2214517.html 带有g-sensor的Android设备上可通过API获取到设备的运动加速度,应用程序通过一些假设和运算,可以从加速度计算出设备的方向 获取设备运动加速度的基本代码是: SensorManager sm = (S...

C# winform在WebBrowser下获取完整的Cookies(包括含HTTPOnly属性的)

利用wininet获取网页Cookie 模拟post请求取数据,使用普通的Cookies无法获取完整的Cookies信息 只能获取了一部分 ,导致取回来的是重新登陆的页面。 后来经过不懈的精神,终于找到了方法实现获取HTTPOnly。 WinInet WinInet(“Windows Internet”)API帮助程序员使用三个常见的Internet协议,...

SVG DOM常用属性和方法介绍

将以Adobe SVG Viewer提供的属性和方法为准,因为不同解析器对JavaScript以及相关的属性和方法支持的程度不同,有些方法和属性是某个解析器所特有的。SVG支持DOM2标准。 12.2.1 文档初始化相关evt属性evt表示事件本身,可以通过evt获取与当前事件相关的信息,用户可以在script中定义响应函数,进行相应的处理。它与普通Jav...

WindowState=WindowState.Maximized不遮住任务栏(WPF)

前提:WindowStyle="None" ResizeMode="NoResize" Step1:在窗体构造函数中加SourceInitialized事件 publicMainWindow() { InitializeComponent(); SourceInitialized +=M...

C# Winform中DataGridView的DataGridViewCheckBoxColumn使用方法

下面介绍Winform中DataGridView的DataGridViewCheckBoxColumn使用方法: DataGridViewCheckBoxColumnCheckBox是否选中 在判断DataGridView中CheckBox选中列的时候,用DataGridViewRow.Cells[0].FormattedValue.ToString()=...