国产精品青草久-国产精品情侣愉拍-国产精品区网红主-国产精品区一区二-国产精品热久久-国产精品热热热-国产精品人aⅴ-国产精品人成在线-国产精品人妻人伦-国产精品人人

金喜正规买球

擴展WinForm的ComboBox

翻譯|其它|編輯:郝浩|2008-01-23 10:42:09.000|閱讀 3768 次

概述:

# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>

個人認為 winform 的 combobox 不是那么的好用,所以自己擴展了一下。
重新定義 Items 屬性,并且支持樹結構。
為每項加入了 CheckBox 狀態。
豐富的列表項類 ListItem。
效果如圖:
代碼清單:
using System;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.Collections;
using System.Drawing.Design;
using System.Drawing.Drawing2D;
using System.Data;
using System.Drawing;
using System.Windows.Forms;
using System.Windows.Forms.Design;

namespace FaibClass.Windows.Forms
{
    [Designer(typeof(ControlDesigner))]
    public class ComboBox : System.Windows.Forms.ComboBox
    {
        // Fields
        private bool blnIsChange = false;
        private int m_ImageIndex = -1;
        private ImageList m_ImageList;
        private ListItemCollection m_items;
        private object objSource;
        private Color m_ItemHoverBackColor;
        private Color m_ItemHoverGradientBackColor = Color.Empty;
        private Color m_ItemHoverColor;
        private int m_Indent = 16;
        private bool m_CheckBoxes = false;
        private bool isUpdate = false;
        private ComboBoxWindow wnd = null;
         internal static int nextId = 0;

        Methods#region Methods
        public ComboBox()
        {
            m_ItemHoverBackColor = SystemColors.Highlight;
            m_ItemHoverColor = SystemColors.HighlightText;
            base.Sorted = false;
        }

        /**//// <summary>
        /// 綁定數據。
        /// </summary>
        public void DataBind()
        {
            if ((this.DataSource != null) && (base.DisplayMember != null))
            {
                switch (this.DataSource.GetType().Name)
                {
                    case "DataTable":
                    {
                        DataTable dtblTmp = (DataTable)this.DataSource;
                        foreach (DataRow drowTmp in dtblTmp.Rows)
                        {
                            string strText = drowTmp[base.DisplayMember].ToString();
                            string strValue = (base.ValueMember == null) ? null : drowTmp[base.ValueMember].ToString();
                            ListItem item = new ListItem(strText, strValue, this.ImageIndex);
                            this.m_items.Add(item);
                        }
                        break;
                    }
                }
            }
        }

        //鎖定更新
        public new void BeginUpdate()
        {
            base.BeginUpdate();
            isUpdate = true;
        }

        //解除更新
        public new void EndUpdate()
        {
            InsertItem(m_items);
            base.EndUpdate();
            isUpdate = false;
        }

        //繪制項
        protected override void OnDrawItem(DrawItemEventArgs e)
        {
            if(e.Index == -1)return;
            Rectangle trect = new Rectangle(0, 0, 0, 0), crect = new Rectangle(0, 0, 0, 0);
            ListItem item = getItem(e.Index);
             if(item == null)return;

            bool isEdit = (e.State & DrawItemState.ComboBoxEdit) == DrawItemState.ComboBoxEdit;

            if(m_CheckBoxes) //復選框的區域
            {
                crect = new Rectangle(m_Indent * item.level, e.Bounds.Top + ((e.Bounds.Height - 16) / 2), 16, 16);
                if(isEdit)
                    crect.Offset(2, 0);
            }
            else
            {
                crect.X = m_Indent * item.level + 2;
            }
            //if(isEdit)
                DrawBackground(e, e.Bounds, item);
            //else
            //    DrawBackground(e, new Rectangle(crect.Left - 1, e.Bounds.Top, e.Bounds.Width - crect.Left + 1, e.Bounds.Height), item);
            Rectangle irect = new Rectangle(crect.Right, 0, 0, 0);
            if(ImageList != null && item.ImageIndex != -1)//畫圖象
            {
                Image sIcon = ImageList.Images[item.ImageIndex];
                irect = new Rectangle(crect.Right, e.Bounds.Top + ((e.Bounds.Height - sIcon.Height) / 2), sIcon.Width, sIcon.Height);
                //圖象太大
                if(irect.Height > e.Bounds.Height)
                {
                    irect = new Rectangle(crect.Right, e.Bounds.Top, e.Bounds.Height, e.Bounds.Height);
                }
                e.Graphics.DrawImage(sIcon, irect);
            }
            trect = new Rectangle(irect.Right, e.Bounds.Top, e.Bounds.Width - irect.Width, e.Bounds.Height);
            if(m_CheckBoxes) //畫復選框
            {
                if(item.checkboxLeft == -1)
                    item.checkboxLeft= crect.Left;
                ControlPaint.DrawCheckBox(e.Graphics, crect , item.Checked ? ButtonState.Checked | ButtonState.Flat : ButtonState.Flat);
            }
             DrawString(e, item, trect); //輸出文本

            e.Graphics.Dispose();
        }

        //重設項大小
        protected override void OnMeasureItem(MeasureItemEventArgs e)
        {
            base.OnMeasureItem(e);
            if (this.ImageList != null)
            {
                e.ItemHeight = this.ImageList.ImageSize.Height;
            }
        }

        protected override void WndProc(ref Message m)
        {
            if(m.Msg == 0x134)//WM_CTLCOLORLISTBOX
            {
                if(m_CheckBoxes && wnd == null)
                {
                    wnd = new ComboBoxWindow(base.Items, Handle); //鉤子
                    wnd.AssignHandle(m.LParam);
                }
            }
            else if(wnd != null && m.Msg == 0x2)//WM_DESTROY
            {
                wnd.ReleaseHandle();
            }
            else if(m.Msg == 0x400 + 0x105) //自定消息 設置checked
            {
                int index = m.WParam.ToInt32();
                ListItem item = FindRealListItem(getItem(index));
                if(item != null)
                {
                    item.Checked = !item.Checked;
                }
            }
            base.WndProc (ref m);
        }

        //畫背景
        private void DrawBackground(DrawItemEventArgs e, Rectangle rect, ListItem item)
        {
            if((e.State & DrawItemState.Selected) == DrawItemState.Selected)
            {
                if(m_ItemHoverGradientBackColor != Color.Empty)
                {
                    //漸變
                    Rectangle r = new Rectangle(rect.Left, rect.Top, rect.Width, rect.Height / 2);
                    e.Graphics.FillRectangle(new LinearGradientBrush(r, m_ItemHoverBackColor, m_ItemHoverGradientBackColor, 90f), r);
                    r = new Rectangle(rect.Left, rect.Top + rect.Height / 2, rect.Width, rect.Height / 2);
                    if(r.Height % 2 == 0){r.Y -= 2; r.Height += 2;}
                    e.Graphics.FillRectangle(new LinearGradientBrush(r, m_ItemHoverBackColor, m_ItemHoverGradientBackColor, 270f), r);
                    ControlPaint.DrawBorder(e.Graphics, rect, m_ItemHoverGradientBackColor, ButtonBorderStyle.Solid);
                }
                else
                    e.Graphics.FillRectangle(new SolidBrush(m_ItemHoverBackColor), rect);
            }
            else
            {
                e.Graphics.FillRectangle(new SolidBrush(item.BackColor), rect);
            }
        }

        //畫文本
        private void DrawString(DrawItemEventArgs e, ListItem item, Rectangle rect)
        {
            StringFormat sf = new StringFormat();
            sf.LineAlignment = StringAlignment.Center;
            rect.Offset(0, 1);
           
            SolidBrush sb = null;
            if(!item.ForeColor.Equals(SystemColors.WindowText) || m_ItemHoverGradientBackColor != Color.Empty)
            {
                sb = new SolidBrush(item.ForeColor);
            }
            else if((e.State & DrawItemState.Selected) == DrawItemState.Selected)
            {
                sb = new SolidBrush(m_ItemHoverColor);
            }
            else
            {
                sb = new  SolidBrush(SystemColors.WindowText);
             }

            e.Graphics.DrawString(item.Text, item.Font, sb, rect, sf);
            sb.Dispose();
        }

        //插入整個根集合
        private void InsertItem(ListItemCollection items)
        {
            foreach(ListItem item in items)
            {
                ListItem lit = item.CloneData();
                lit.Items = null;
                lit.level = item.level;
                if(item.Parent.GetType() == typeof(ListItem))
                {
                    ListItem parent = (ListItem)item.Parent;
                    lit.Parent = parent;
                }
                base.Items.Add(lit);
                InsertItem(item.Items);
            }
        }

        //插入新項
        internal int InsertItem(int index, ListItem item, int method)
        {
            if(isUpdate)return 0;
            ListItem lit = item.CloneData();
            lit.Items = null;
            lit.level = item.level;
            int count = 0;
            if(item.Parent.GetType() == typeof(ListItem))
            {
                ListItem parent = (ListItem)item.Parent;
                foreach(ListItem lt1 in parent.Items)
                {
                    GetItemLocation(lt1.Items, lit, ref count);
                }
                lit.Parent = parent;
                int i = 0;
                for(; i < base.Items.Count; i++)
                {
                    if(getItem(i).id == parent.id)
                    {
                        break;
                    }
                }
                base.Items.Insert(i + 1 + index + count, lit);
            }
            else
            {
                foreach(ListItem lt1 in ((ComboBox)item.Parent).Items)
                {
                    GetItemLocation(lt1.Items, lit, ref count);
                }
                base.Items.Insert(index + count, lit);
            }
            return base.Items.Count - 1;
        }

        private void GetItemLocation(ListItemCollection items, ListItem owner, ref int count)
        {
            foreach(ListItem lt in items)
            {
                if(owner.id != lt.id && CheckIsInItems(lt.id))
                {
                    count ++;
                    GetItemLocation(lt.Items, owner, ref count);
                }
            }
        }

        private bool CheckIsInItems(int id)
        {
            foreach(object o in base.Items)
            {
                if(((ListItem)o).id == id)
                {
                    return true;
                }
            }
            return false;
        }

        internal void RemoveItem(ListItem item)
        {
            if(isUpdate)return;
            int index = FindItem(item.id);
            if(index != -1)
                base.Items.RemoveAt(index);
        }

        internal void ClearItem()
        {
            base.Items.Clear();
        }

        private int FindItem(int id)
        {
            if(this.DesignMode)return -1;
            for(int i = 0; i < base.Items.Count; i++)
            {
                if(getItem(i).id == id)
                    return i;
            }
            return -1;
        }

        private void FindItem(int id, ListItem item, ref ListItem find)
        {
            foreach(object lt in item.Items)
            {
                ListItem lt1 = (ListItem)lt;
                if(lt1.id == id)
                {
                    find = lt1;
                    break;
                }
                FindItem(id, lt1, ref find);
            }
        }

        private void FindCheckedItem(ListItemCollection items, ref CheckedListItemCollection checkeditems)
        {
            foreach(object lt in items)
            {
                ListItem lt1 = (ListItem)lt;
                if(lt1.Checked)checkeditems.Add(lt1);
                FindCheckedItem(lt1.Items, ref checkeditems);
            }
        }

        private ListItem FindRealListItem(ListItem item)
        {
            if(item.Parent == null) //為根節點
            {
                foreach(ListItem lt in this.m_items)
                {
                    if(lt.id == item.id)
                        return lt;
                }
                return null;
            }
            else
            {
                ListItem temp = item;
                while(true) // 找到根級
                {
                    if(temp.Parent == null)break;
                    if(temp.Parent.GetType() == typeof(ComboBox))break;
                    temp = (temp.Parent as ListItem);
                }
                ListItem find = null;
                //找子項里
                FindItem(item.id, temp, ref find);
                return find;
            }
        }

        internal void setText(int id, string text)
        {
            int index = FindItem(id);
            if(index != -1)
            {
                getItem(index).Text = text;
            }
        }

        internal void setImageIndex(int id, int imageIndex)
        {
            int index = FindItem(id);
            if(index != -1)
                getItem(index).ImageIndex = imageIndex;
        }

        internal void setForeColor(int id, Color foreColor)
        {
            int index = FindItem(id);
            if(index != -1)
                getItem(index).ForeColor = foreColor;
        }

        internal void setBackColor(int id, Color backColor)
        {
            int index = FindItem(id);
            if(index != -1)
                getItem(index).BackColor = backColor;
        }

        internal void setFont(int id, Font font)
        {
            int index = FindItem(id);
            if(index != -1)
                getItem(index).Font = font;
        }

        internal void setChecked(int id, bool check)
        {
            int index = FindItem(id);
            if(index != -1)
                getItem(index).Checked = check;
        }

        internal void setItem(int id, ListItem item)
        {
            int index = FindItem(id);
            if(index != -1)
                base.Items[index] = item.CloneData();
        }

        private ListItem getItem(int index)
        {
            if(index < 0 || index > base.Items.Count - 1)
                throw new ArgumentNullException("索引值超出集合的范圍");
            return (ListItem)base.Items[index];
        }

        #endregion

        Properties#region Properties
        [Category("Data"), Description("用于綁定的數據源。")]
        public new object DataSource
        {
            get
            {
                return this.objSource;
            }
            set
            {
                this.objSource = value;
                base.DataSource = null;
            }
        }

        [Category("Appearance"),
        Editor("System.Windows.Forms.Design.ImageIndexEditor, System.Design", typeof(UITypeEditor)),
        TypeConverter(typeof(ImageIndexConverter)),
        DefaultValue(-1)]
        public int ImageIndex
        {
            get
            {
                return this.m_ImageIndex;
            }
            set
            {
                this.m_ImageIndex = value;
            }
        }

        [Description("組合框中的項的圖象所使用的ImageList控件。"),
        Browsable(true),
        DefaultValue((string)null)]
        public ImageList ImageList
        {
            get
            {
                return this.m_ImageList;
            }
            set
            {
                this.m_ImageList = value;
            }
        }

        [Category("Behavior"),
        DesignerSerializationVisibility(DesignerSerializationVisibility.Content),
        Editor(typeof(CollectionEditor), typeof(UITypeEditor)),
        MergableProperty(false),
        Description("組合框中的項。"),
        DefaultValue((string)null),
        Localizable(true)]
        public new ListItemCollection Items
        {
            get
            {
                if(m_items == null)
                    m_items = new ListItemCollection(this, this);
                return this.m_items;
            }
        }

        [Browsable(false)]
        public new ListItem SelectedItem
        {
            get
            {
                if (this.SelectedIndex == -1)
                {
                    return null;
                }
                return FindRealListItem(getItem(this.SelectedIndex));
            }
        }

        [Browsable(false)]
        public new string SelectedText
        {
            get
            {
                if (this.SelectedIndex == -1)
                {
                    return null;
                }
                return SelectedItem.Text;
            }
            set
            {
                if ((this.SelectedIndex != -1) && !this.blnIsChange)
                {
                    SelectedItem.Text = value;
                }
            }
        }

        [Browsable(false)]
        public new object SelectedValue
        {
            get
            {
                if (this.SelectedIndex == -1)
                {
                    return null;
                }
                return SelectedItem.Value;
            }
            set
            {
                if (this.SelectedIndex != -1)
                {
                    SelectedItem.Value = value;
                }
            }
        }

        [Browsable(false)]
        public CheckedListItemCollection CheckedItems
        {
            get{
                CheckedListItemCollection checkitems = new CheckedListItemCollection();
                if(m_CheckBoxes)
                    FindCheckedItem(this.m_items, ref checkitems);
                return checkitems;
            }
        }

        [Category("Appearance"),
        Description("獲取或設置鼠標移上列表項時的前景景顏色。")]
        public Color ItemHoverColor
        {
            get{return m_ItemHoverColor;}
            set{m_ItemHoverColor = value;}
        }

        [Category("Appearance"),
        Description("獲取或設置鼠標移上列表項時的背景顏色。")]
        public Color ItemHoverBackColor
        {
            get{return m_ItemHoverBackColor;}
            set{m_ItemHoverBackColor = value;}
        }

        [Category("Appearance"),
        DefaultValue((string)null),
        Description("獲取或設置鼠標移上列表項時的背景顏色。")]
        public Color ItemHoverGradientBackColor
        {
            get{return m_ItemHoverGradientBackColor;}
            set{m_ItemHoverGradientBackColor = value;}
        }
       
        [DefaultValue(16),
        Description("子節點的縮進寬度。")]
        public int Indent
        {
            get{return m_Indent;}
            set{m_Indent = value;}
        }

        [DefaultValue(false),
        Description("是否顯示復選框。")]
        public bool CheckBoxes
        {
            get{return m_CheckBoxes;}
            set{m_CheckBoxes = value;}
        }

        #endregion

        ListItemCollection#region ListItemCollection
        public class ListItemCollection : IList, ICollection, IEnumerable
        {
            private ComboBox owner;
            private object parent;
            private ArrayList items;
            private bool inserted = true;
             internal byte level = 0;

            // Methods
            internal ListItemCollection(ComboBox comboBox, object parent)
            {
                items = new ArrayList();
                this.owner = comboBox;
                this.parent = parent;
             }

            public ListItemCollection()
            {
                items = new ArrayList();
             }

            internal ListItemCollection(bool inserted)
            {
                items = new ArrayList();
                this.inserted = inserted;
             }

            public ListItem this[int index]
            {
                get{
                    if(index < 0 || index > items.Count - 1)
                        throw new ArgumentNullException("索引值超出集合的范圍");
                    return items[index] as ListItem;
                }
                set
                {
                    if(index < 0 || index > items.Count - 1)
                        throw new ArgumentNullException("索引值超出集合的范圍");
                    ListItem item = (ListItem)items[index];
                    value.id = item.id;
                    value.level = item.level;
                    items[index] = value;
                    if(owner != null)owner.setItem(value.id, value);
                }
             }

            public int Count
            {
                get{return items.Count;}
             }

            public int Add(string Text)
            {
                return Insert(-1, new ListItem(Text));
             }

            public int Add(string Text, object Value)
            {
                return Insert(-1, new ListItem(Text, Value));
             }

            public int Add(string Text, int ImageIndex)
            {
                return Insert(-1, new ListItem(Text, ImageIndex));
             }

            public int Add(string Text, object Value, int ImageIndex)
            {
                return Insert(-1, new ListItem(Text, Value, ImageIndex));
             }

            public int Add(ListItem item)
            {
                return Insert(-1, item);
             }

            public void AddRange(ListItem[] items)
            {
                for(IEnumerator e = items.GetEnumerator(); e.MoveNext();)
                    Insert(-1, (ListItem)e.Current);
             }

            public int Insert(int index, ListItem item)
            {
                int ret = 0;
                if(inserted)
                    item.level = level;
                int m = 1;
                if(index == -1)
                {
                    index = this.Count;
                    m = 0; //為添加
                }
                item.Host(owner);
                item.Parent = parent;
                item.Text = (item.Text.Length == 0) ? item.GetType().Name : item.Text;
                items.Insert(index, item);
                if(inserted)
                {
                    item.id = ComboBox.nextId ++;
                    if(owner != null)
                    {
                        ret = item.Index = owner.InsertItem(index, item, m);
                        AddItem(item, item.Items);
                    }
                }
                return ret;
             }

            internal void Host(ComboBox comboBox, object parent)
            {
                this.owner = comboBox;
                this.parent = parent;
             }

            private void AddItem(ListItem parent, ListItemCollection items)
            {
                int i = 0;
                foreach (ListItem item in items)
                {
                    item.Host(owner);
                    item.Parent = parent;
                    item.level = items.level;
                    item.Index = owner.InsertItem(i, item, 0);
                    i++;
                }
             }

            public void Remove(ListItem item)
            {
                if(owner != null)owner.RemoveItem(item);
                items.Remove(item);
             }

            public void RemoveAt(int index)
            {
                if(owner != null)owner.RemoveItem(this[index]);
                items.RemoveAt(index);
             }

            public int IndexOf(ListItem item)
            {
                return items.IndexOf(item);
             }

            public bool Contains(ListItem item)
            {
                return items.Contains(item);
             }

            public void Clear()
            {
                items.Clear();
                owner.ClearItem();
             }

            public IEnumerator GetEnumerator()
            {
                return items.GetEnumerator();
             }

            ICollection Members#region ICollection Members
            void ICollection.CopyTo(Array array, int index)
            {
                for (IEnumerator e = this.GetEnumerator(); e.MoveNext();)
                    array.SetValue(e.Current, index++);
            }
       
            bool ICollection.IsSynchronized
            {
                get { return false; }
             }

            object ICollection.SyncRoot
            {
                get { return this; }
            }
             #endregion

            IList Members#region IList Members
            object IList.this[int index]
            {
                get { return this[index]; }
                set { this[index] = (ListItem)value; }
             }

            bool IList.Contains(object item)
            {
                return Contains((ListItem)item);
             }

            int IList.Add(object item)
            {
                return Add((ListItem)item);
             }

            bool IList.IsFixedSize
            {
                get {return false;}
             }

            int IList.IndexOf(object item)
            {
                return IndexOf((ListItem)item);
             }

            void IList.Insert(int index, object item)
            {
                Insert(index, (ListItem)item);
             }

            void IList.Remove(object item)
            {
                Remove((ListItem)item);
             }

            void IList.RemoveAt(int index)
            {
                RemoveAt(index);
             }

            void IList.Clear()
            {
                Clear();
             }

            bool IList.IsReadOnly
            {
                get{return false;}
            }
            #endregion
        }

        #endregion

        CheckedListItemCollection#region CheckedListItemCollection
        public class CheckedListItemCollection : CollectionBase
        {
            public void Add(ListItem item)
            {
                List.Add(item);
             }

            public void Remove(ListItem item)
            {   
                List.Remove(item);
             }

            public ListItem this[int index]
            {
                get{
                    if(index < 0 || index > List.Count - 1)
                        throw new ArgumentNullException("索引值超出集合的范圍");
                    return List[index] as ListItem;
                }
            }
        }
        #endregion
       
        ComboBoxWindow#region ComboBoxWindow
        internal class ComboBoxWindow : NativeWindow
        {
            private System.Windows.Forms.ComboBox.ObjectCollection items;
             private IntPtr handle = IntPtr.Zero;

            internal ComboBoxWindow(System.Windows.Forms.ComboBox.ObjectCollection items, IntPtr handle)
            {
                this.items = items;
                this.handle = handle;
             }

            protected override void WndProc(ref Message m)
            {
                if(m.Msg == 0x201)//WM_LBUTTONDOWN
                {
                    Win32.RECT rect = new Win32.RECT();
                    Win32.GetClientRect(m.HWnd, ref rect);
                    Win32.POINTAPI pt = new Win32.POINTAPI();
                    pt.x = Win32.LOWORD(m.LParam.ToInt32());
                    pt.y = Win32.HIWORD(m.LParam.ToInt32());
                    //如果在區域內
                    if(new Rectangle(rect.Left, rect.Top,rect.Left + rect.Right, rect.Top + rect.Bottom).Contains(new Point(pt.x, pt.y)))
                    {
                        int nItemHeight = Win32.SendMessage(m.HWnd, 0x1A1, 0, 0);//LB_GETITEMHEIGHT
                        //獲得頂部項的索引
                        int nTopIndex = Win32.SendMessage(m.HWnd, 0x18E, 0, 0); //LB_GETTOPINDEX
                        int nIndex = nTopIndex + pt.y / nItemHeight;
                        if (items.Count == 0)
                        {
                            base.WndProc (ref m);
                            return;
                        }
                        //判斷是否在復選框處
                        if(pt.x > ((ListItem)items[nIndex]).checkboxLeft && pt.x < ((ListItem)items[nIndex]).checkboxLeft + 16)
                        {
                            Win32.RECT re = new Win32.RECT();
                            //取位置
                            Win32.SendMessage(m.HWnd, 0x198, nIndex, ref re); //LB_GETITEMRECT
                            //重畫
                            Win32.InvalidateRect(m.HWnd, re, 0);
                            //發送自定消息勾選復選框
                            Win32.SendMessage(handle, 0x400 + 0x105, nIndex, 0);
                            return;
                        }
                    }
                }
                base.WndProc (ref m);
            }
        }
         #endregion

    }
}

using System;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.Collections;
using System.Drawing.Design;
using System.Windows.Forms;
using System.Drawing;

namespace FaibClass.Windows.Forms
{
    [Serializable,
    DesignTimeVisible(false),
    DefaultProperty("Text"),
    TypeConverter(typeof(ListItemConverter))]
    public class ListItem : Component
    {
        // Fields
        private int m_ImageIndex = -1;
        private int m_Index;
        private object m_Tag;
        private string m_Text = string.Empty;
        private object m_Value;
        private bool m_Checked = false;
        private Font m_Font;
        private ComboBox comboBox;
        private ComboBox.ListItemCollection m_items = new ComboBox.ListItemCollection();
        private Color m_ForeColor, m_BackColor;
        private object parent;
        internal int id = -1;
        internal int checkboxLeft = -1;
         internal byte level = 0;

        // Methods
        public ListItem()
        {
            this.m_ImageIndex = -1;
        }

        public ListItem(string Text) : this (Text, Text, -1)
        {
        }

        public ListItem(string Text, int ImageIndex) : this (Text, Text, ImageIndex)
        {
        }

        public ListItem(string Text, object Value) : this (Text, Value, -1)
        {
        }

        public ListItem(string Text, object Value, int ImageIndex)
        {
            this.m_Text = Text;
            this.m_Value = Value;
            this.m_ImageIndex = ImageIndex;
        }

        internal ListItem CloneData()
        {
            ListItem lt = new ListItem();
            lt.Text = this.Text;
            lt.ImageIndex = this.ImageIndex;
            lt.Font = this.Font;
            lt.ForeColor = this.ForeColor;
            lt.BackColor = this.BackColor;
            lt.Checked = this.Checked;
            lt.id = id;
            return lt;
        }

        public override string ToString()
        {
            return this.Text;
        }

        internal void Host(ComboBox comboBox)
        {
            this.comboBox = comboBox;
            m_items.Host(comboBox, this);
            m_items.level = (byte)(level + 1);
        }

        Properties#region Properties
        [Category("Appearance"),
        Editor("System.Windows.Forms.Design.ImageIndexEditor, System.Design", typeof(UITypeEditor)),
        TypeConverter(typeof(ImageIndexConverter)),
        DefaultValue(-1)]
        public int ImageIndex
        {
            get
            {
                return this.m_ImageIndex;
            }
            set
            {
                this.m_ImageIndex = value;
                if(comboBox != null && id != -1)
                    comboBox.setImageIndex(id, value);
            }
        }

        [Browsable(false),
        DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
        public int Index
        {
            get
            {
                return this.m_Index;
            }
            set
            {
                this.m_Index = value;
            }
        }

        [Browsable(true),
        TypeConverter(typeof(StringConverter)),
        DefaultValue((string)null),
        Description("獲取或設置包含數據的對象以與該項關聯。")]
        public object Tag
        {
            get
            {
                return this.m_Tag;
            }
            set
            {
                this.m_Tag = value;
            }
        }

        [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible),
        Localizable(true),
        Description("獲取或設置該項顯示的文本。")]
        public string Text
        {
            get
            {
                return this.m_Text;
            }
            set
            {
                this.m_Text = value;
                if(comboBox != null && id != -1)
                    comboBox.setText(id, value);
            }
        }

        [Description("獲取或設置該項顯示的值。"),
        TypeConverter(typeof(StringConverter)),
        DefaultValue((string)null),
        Browsable(true)]
        public object Value
        {
            get
            {
                return this.m_Value;
            }
            set
            {
                this.m_Value = value;
            }
        }

        [Browsable(false)]
        public ImageList ImageList
        {
            get
            {
                if(this.comboBox != null)
                {
                    return this.comboBox.ImageList;
                }
                return null;
            }
        }

        [Category("Appearance")]
        public Font Font
        {
            get{
                if(m_Font == null)
                {
                    if(comboBox != null)
                    {
                        return comboBox.Font;
                    }
                    return Control.DefaultFont;
                }
                return m_Font;
            }
            set{m_Font = value;}
        }

        [Category("Appearance")]
        public Color ForeColor
        {
            get
            {
                if(m_ForeColor == Color.Empty)
                {
                    if(comboBox != null)
                    {
                        return comboBox.ForeColor;
                    }
                    return Control.DefaultForeColor;
                }
                return m_ForeColor;
            }
            set{
                m_ForeColor = value;
                if(comboBox != null && id != -1)
                    comboBox.setForeColor(id, value);
            }
        }
       
        [Category("Appearance")]
        public Color BackColor
        {
            get
            {
                if(m_BackColor == Color.Empty)
                {
                    if(comboBox != null)
                    {
                        return comboBox.BackColor;
                    }
                    return Control.DefaultBackColor;
                }
                return m_BackColor;
            }
            set{
                m_BackColor = value;
                if(comboBox != null && id != -1)
                    comboBox.setBackColor(id, value);
            }
        }
       
        [Category("Behavior"),
        DefaultValue(false)]
        public bool Checked
        {
            get{return m_Checked;}
            set{
                m_Checked = value;
                if(comboBox != null && id != -1)
                    comboBox.setChecked(id, value);
            }
        }

        [Category("Behavior"),
        DesignerSerializationVisibility(DesignerSerializationVisibility.Content),
        Editor(typeof(CollectionEditor), typeof(UITypeEditor)),
        MergableProperty(false),
        Description("組合框中的項。"),
        DefaultValue((string)null),
        Browsable(false),
        Localizable(true)]
        public ComboBox.ListItemCollection Items
        {
            get
            {
                return this.m_items;
            }
            set
            {
                m_items = value;
            }
        }

        internal object Parent
        {
            get{return parent;}
            set{parent = value;}
        }
        #endregion
    }
}
using System;
using System.Drawing.Design;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.ComponentModel.Design.Serialization;
using System.Globalization;
using System.Reflection;

namespace FaibClass.Windows.Forms
{
    internal sealed class ListItemConverter: ExpandableObjectConverter
    {
        public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType)
        {
            if(destinationType == typeof(System.ComponentModel.Design.Serialization .InstanceDescriptor))
                return true;
            else
                return base.CanConvertTo (context, destinationType);
        }

        public override object ConvertTo(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value, Type destinationType)
        {
            if(destinationType ==  typeof(System.ComponentModel.Design.Serialization.InstanceDescriptor))
            {
                Type valueType = value.GetType();
                ConstructorInfo ci = valueType.GetConstructor(System.Type.EmptyTypes);
                ListItem item = (ListItem)value;
                return new InstanceDescriptor(ci,null,false);
            }
            else
                return base.ConvertTo (context, culture, value, destinationType);
        }   
    }
}

using System;
using System.Runtime.InteropServices;

namespace FaibClass.Windows.Forms
{
    internal class Win32
    {
        [DllImport("user32", EntryPoint="GetClientRect")]
        public static extern int GetClientRect (
            IntPtr hwnd,
            ref RECT lpRect
             );

        [DllImport("user32", EntryPoint="GetWindowRect")]
        public static extern int GetWindowRect (
            IntPtr hwnd,
            ref RECT lpRect
             );

        [DllImport("user32", EntryPoint="PtInRect")]
        public static extern int PtInRect (
            ref RECT lpRect,
            ref POINTAPI pt
             );

        [DllImport("user32", EntryPoint="SendMessage")]
        public static extern int SendMessage (
            IntPtr hwnd,
            int wMsg,
            int wParam,
            int lParam
             );

        [DllImport("user32", EntryPoint="SendMessage")]
        public static extern int SendMessage (
            IntPtr hwnd,
            int wMsg,
            int wParam,
            ref RECT rect
             );

        [DllImport("user32", EntryPoint="InvalidateRect")]
        public static extern int InvalidateRect (
            IntPtr hwnd,
            RECT lpRect,
            int bErase
             );

        [StructLayout(LayoutKind.Sequential)]
        public struct RECT 
        {
            public int Left;
            public int Top;
            public int Right;
            public int Bottom;
        }
        [StructLayout(LayoutKind.Sequential)]
        public struct POINTAPI 
        {
            public int x;
            public int y;
        }

        public static int HIWORD(int lparam)
        {
             return ((lparam >> 16) & 0xffff);
        }

        public static int LOWORD(int lparam)
        {
            return (lparam & 0xffff);
        }

        public static int MakeLParam(int LoWord, int HiWord)
        {
            return (HiWord << 16) | (LoWord & 0xffff);
        }


    }
}


標簽:

本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn

文章轉載自:個人博客

為你推薦

  • 推薦視頻
  • 推薦活動
  • 推薦產品
  • 推薦文章
  • 慧都慧問
掃碼咨詢


添加微信 立即咨詢

電話咨詢

客服熱線
023-68661681

TOP
91香蕉app下载免费版 | 少妇爆乳无码av无码波霸 | 成人欧美精品久久久久影院 | www亚洲福利姬在线观看 | 亚洲午夜无码av毛片久久 | av在线一区二区三区 | 国产午夜无码精品免费看 | 国产黄片av免费观看 | 国产成人午夜福利小电影 | 国产在线精品2区 | 日韩精品免费一区二区三区高清 | 亚洲一区二区三区在线观看网站 | 精品人妻系列无码一区二区三区 | 黄色网站哪里可以看呜呜呜 | 国产欧美精品久久三级 | 国产v一区二区久久久 | 欧美综合图区亚洲综合图区 | 禁漫天堂不知火舞 | 国产偷规视频在线观看 | 白丝兔女郎m开腿sm调教室 | 91精品国产色综合久久久蜜臀 | 99久久综合精品国产 | 成人毛片在线精品国产 | 国产高潮又爽又无遮挡又免费 | 国产亚洲精品va在线 | 亚洲产国偷v产偷v自拍涩爱 | 日韩免费一区二区三区在线播放 | 国模极品一区二区 | 亚洲av永久天 | 精品国产自在91欧美日韩 | 欧美va亚洲va国产综合 | av无码一码免费在线观看 | 91无码人妻精品一区二区蜜桃 | 国产极品美 | 国产一区二 | 91免费国产在线观看 | 欧洲精品亚洲精品日韩专区 | 国产精品高潮呻吟久久v | 色综合久| 国产精品外围在线观看 | 99免费精品无码视频 | 日韩精品一区二区三区蜜桃 | 亚洲精品国产拍精品 | 欧美一区二区三区在线观看 | 日韩精品无码免费专区午夜不卡 | 亚洲综合区夜久久无码精品 | 国产av一区二区三区传 | 亚洲一区二区三区免费在线观看 | 免费午夜爽爽爽www视频 | 99ri在线| 日韩av无码久久精品免费 | 蝌蚪窝在线观看免费视频 | 国产av99激情久久无码天堂 | 无码专区亚洲综合另类 | 亚洲国产第 | 国产麻豆一精品一av一免费软件 | 精品人妻一区二区三区四区在线 | 亚洲日本韩国在线 | 黄页在线观看av网站无广告 | 99久久综合狠狠综合久久aⅴ | 亚洲无线一二三四区手机 | 精品国产自在精品国产 | 亚洲av片不卡无码久久 | 国产露脸对白91精品 | 中文字幕精品无码亚洲幕 | 在线h片 | 中文字幕av无码专区第一页 | 992tv国产精品福利在线 | 国产成人无码精品一区在线观看 | 亚洲中文字幕久久精品蜜桃 | av无码国产精品午夜a片 | 少妇的渴望hd高清在线播放 | 午夜成人黄色电影 | 国产午夜精品久久久久 | 国产91中文在线播放 | 日韩午夜影院在线观看 | 国产日韩精品一区二区三区在线观 | 国产精品免费一区二区区 | 九一香蕉视频 | 97夜夜澡人人双人人人喊 | 午夜美女黄网站18禁免费观看 | 国产蜜桃av视频一区二区 | 日本乱偷人妻中文字 | 欧美亚洲综合精品 | 日韩欧美国产高清 | 日本高清成本人视频一区 | 国产欧美综合在线一区二区三区 | 国产午夜 | 色窝网站在线播放 | 精品国产一区二区三区不卡 | 91欧美激情一区二区三区成 | 九九九亚洲精品 | 国产精品分类视频分类一区 | 四虎永久在线精品波多野结衣 | 99九九成人免费视频精品 | 国产日韩av大片一区二区 | 欧美日本一区二区三区在线 | 国产精品2025观看久久 | 国产成人综合怡春院 | 国产av寂寞骚妇 | 爱福利视频 | 91香蕉短视频超碰97在线人 | 91极品视频在线观 | 国产香蕉在线 | 国产亚洲综合成人91精品 | 亚洲中文字幕 | 国内免费久| 91欧美视频 | 亚洲无码在线免费观看 | 97se亚洲国产综合自在线 | 91蜜桃国产成人精 | 无码免费不卡av手机在线观看 | 麻豆av在线播放免费网站 | 内射无码视频午夜精品一区 | 中文字幕亚洲男人的天堂网络 | 欧美综合在线一区 | 国产动漫频道 | 国产精品嫩草影院免费看 | 蜜月av| 办公室爆乳在线 | 成人毛片在线精品国产 | 国产精品亚洲午夜一区二区三区 | 精品久久久无码人妻中 | 国产gay高中生小鲜肉屁股 | 国产精品无 | 亚洲精品www久久久久久 | 国产在线观看三级高清 | 亚洲av永久无码天堂网手机版 | 少妇高潮喷水久久久久久久久久 | 亚洲日本一区二区三区在线 | 天天干夜夜操狠狠干 | 亚洲无码在线观看免费视频 | 91香蕉短视频超碰97在线人 | 九九精品一区二区三区 | 欧美在线不卡一区在 | 婷婷色爱区综合五月激情 | 果冻传媒的女主董小宛免费高清资源 | 国产偷抇久久精品a片蜜臀a | 国产成人综合亚洲亚洲欧美 | a级毛片无码免费真人久 | 欧美午夜理伦三级在线 | 国产高清在 | a级国产乱理伦片在线观看 a级国产乱理伦片在线观看al | 麻豆人妻 | 国产99久久亚洲综合精品西 | 国产一二三四区中 | 综合欧美精品日韩专区 | 精品国精品国产自在久91 | 四虎成人网站 | 四虎欧美在线观看免费 | 白浆免费视频国产精品视频 | 欧美孕妇变态重口另类 | 人妻无码aⅴ中文系列久久免费 | 丰满少妇人妻无码专区 | 91探花在线 | 91精品电影 | 国产清纯白嫩美女正无套播放 | 韩国三级香港三级日本三级 | 国户一区二区免费视频 | 午夜免费小视频 | 黄色网站在线免费观看 | 亚洲欧美变态另类综合 | 亚洲精品色 | 超品神医无敌逆袭 | 国产精品毛片久久久久久久 | 丰满av无码久久不卡 | 亚洲h动漫网| 国产午夜激情视频自拍 | 亚洲av永久无码精品秋霞电影影 | 最新国产一级a一片免费观看 | av色国产色拍 | 九九精品一区二区三区 | 精品一区二区三区免费视频 | 国精产品一区二区三区四区糖心 | 91香蕉appios下载免费 | 日韩国产午夜一区二区三区 | 亚洲一区二三区好的精华液 | 欧美全免费aa | 成人夜晚看片如何选择合适的影片 | 欧美性高清bbbbbbxxxxx | 三年片免费观看大全 | 日韩经典精品无码一区 | 日本精品成人一区二区三区视频 | 欧美久久天天高清精品 | 国产高潮流白浆免费观看不卡 | 国产精品91视频 | 日韩有码欧美激情 | 亚洲午夜在线观看 | 亚洲一区在线视频 | 久久高潮 | 91久久精品在这里色伊人68 | 国产精品av免费观看 | 日本熟人妻中文字幕在线 | a级毛片 | 无码人妻丰满熟妇精品区 | 亚洲av无码男人的天堂 | 国产精品成av人在线观看片 | 国产精品无码无卡无需播放器 | 亚洲精品久久久中文字幕痴女 | 亚洲av综合色 | 97成人无码免费一区二区中文 | 狠狠夜色 | 国内精品久久久久久久久久影视 | 成人免费无码成人影院日韩 | 东京热app| 色欲av伊人| 国产成人午夜福利在线观看视 | 黄网站色视频免费观看无码一区 | 不卡高清av手机在线观看 | 91超碰人人澡夜夜澡 | 国产好吊妞视频在线 | 亚洲欧美国产免费综合视频 | 国产激情免费在线观看片 | 精品一区二区久久久久久久网站 | 一级中文字幕在线播放 | 麻豆果冻传媒av人妻少妇无码 | 国产精品高清另类一区二区三区 | 婷婷在线观看视频免费播放 | 国产高清自拍 | 精品国产无码大片在线看 | 天堂网国产69高清在线视频 | 国产a∨国片精品白丝美女视频 | 人妻体内 | 国产免费久久精品99久久 | 欧美巨鞭大战丰满少妇 | 亚洲第一综 | 午夜无码不卡中文字幕最新 | 国产精品a成v人在线 | 国产亚洲精品 | 日韩中文字幕熟女人妻 | 精品人妻视频一区二区三区 | 无码在线观看三级高清 | 91k国产在线观看尤物 | 午夜精品久久久内射近拍高清 | av的中文解释和发音 | 国产特级毛片aaaaaa高清 | 精品人妻一区二区三区四区在线 | а√天堂资源官网在线资源 | 国产精品成久 | 亚洲国产成人精品女人久久久 | 三年片在线观看免费观看大全中国 | 成人无码精品1区2区3区免费看 | 国产福利网 | 国产91对白在线播放边 | 亚洲三级片在线观看 | 91精品国产福利在线观看 | 亚洲精品一区三区三区在线观看 | 精品国产麻豆免费 | 欧美午夜精品一区二区蜜桃 | 精品国产91av自在自线麻豆 | 国产精品嫩草影院免费看 | 亚洲av丰满熟妇在线播放 | 性情中人中文网 | 亚洲日韩精品一区二区三区 | 91亚洲精品无码久久久久 | 亚洲av永久无码精品网站在线观看 | 精品日本三级在线观看 | 亚洲成在人线av壁咚影院 | 亚洲精品成人无码中文毛片不 | 亚洲午夜国产精品无码老牛影视 | 国产精品无码无卡无需播放器 | 成人区人妻精品一区二区不卡 | 超级九七视频在线观看 | 国产av无码片毛片一级流奶水 | 日韩精品中文字幕一区二区三区 | 国产免费网站看v片在线软件 | 欧洲亜洲中文日韩色图 | 欧美日韩女优在线 | 无码人妻精品一区二区三区久久 | 天天夜碰日日摸日日澡性色av | 亚洲精品一线在线观看 | 国产ts在线播放网站 | 亚洲精品国产a久久久久久 亚洲精品国产va在 亚洲精品国产啊女成拍色拍 | 91影视永久福利免费观 | 日韩高清在线第一页 | 国产综合久久久久影院 | 色综合网站av综合无码综合网 | 丰满气质白嫩少妇呻吟高潮 | 精品国产乱码久久久久久久 | 亚洲成a人一区二区三区 | 亚洲av无码一区二区三区网站 | 成人性生交大片免费看中文 | 日本特黄高清a一级视频 | 亚洲成a人片在线观看无码3d | 国产熟女露脸大叫高潮 | 成人国产精品视频 | 麻豆视频 | 成人无码免费视频97 | 无码在线播放 | 成全影院电视剧在线观看 | 91综合久久婷婷久久 | 91极品尤物91禁国产在线播放 | 亚洲av女人天堂 | 亚洲无码大片在线观看 | 亚洲精品在线观看视频 | 另类欧美日韩综合一区 | 国产日韩欧美一区二区三区精品 | 国产在线观看无遮挡 | 午夜精品一区二区三区在线观看 | 97精品伊人久久久大 | 日韩欧美精品一区二区三区 | 国产精品成人99久久久久 | 午夜av在线播放不卡 | 亚洲精品伊人久 | 国产欧美在线播放视频免费 | 天美传媒果冻传媒入口 | 高清无码1区2区3区 高清无码不卡视频 | 精品无码一区二区三区 | 中文无码制 | 亚洲精品无码日韩国产不卡av | 3p52老情人国产短视频 | 国产精品亚洲日韩aⅴ在线 国产精品亚洲色婷婷99久久精品 | 国产在线观看三级高清 | 亚洲国产成人av手机在线观看 | 99视频精品在线 | 国产片第一福利片 | 午夜精品久久久久久99热 | 中文字幕乱人伦高清视频 | 成年人中 | 国产精品永久免费 | 内射一区二区精品视频在线观看 | 国产日本一区二区三区 | 综合黑丝美腿性爱视频 | 无码专区日韩精品中文字幕 | 性色午夜婬片aaa播放 | 国产黄色视频免费在线观看 | 国产成人精?综合久久久 | 精品福利一区二区三区精品 | 日韩欧美一区二区三区在线视 | 亚洲成人啦啦啦大 | 无码专区视频 | 国产欧美不卡在线观看视频 | 天天爽爽夜夜爽国产精品欧 | 风流老熟女一区二区三区l 风流老太婆大bbw | 91精品久久久久久久久入口 | 国产a丝袜旗袍无码视频 | 国产精品18久久久久久不卡 | 午夜精品久久久久久久无码软件 | 国产成人精品亚洲线观看 | 精品在线一区二区 | 超品神医无敌逆袭 | 究竟是人性的扭曲还是道德的沦丧 | 日韩精品一区二三区中文 | 91看片淫黄大片.在线天堂 | 亚洲欧美另类在线观看 | 国产婷婷白色精品 | 无码午夜人妻一区二区三区不卡视频 | 精品国产免费一区二区三区 | 国产精品第九页 | av无码理论片在线观看免费网站 | 国产avxxxx无套内射 | 久久不见久久见中文字幕免费 | 国产亚洲精品无码aa在线观看 | 日韩av第一页 | 人人妻人人澡人人爽人人精品97 | 欧美精品久 | 中文字幕无码成人免费视频 | 欧美一级乱理片免费观看 | 国产真实露脸乱子伦 | 国产精品无套内射迪丽热巴 | 成全视频在 | a级国产乱理论片在线观看 a级国产乱理论片在线观看丶 | 精品国产高清自在线99 | 99精品国产在热久久婷婷 | 精品一区二区三区密臀在线 | 91网站入口 | 午夜精品一区二区三区在线观看 | 亚洲一区二区免费在线观看 | 精品国产91av自在自线麻豆 | 国产精品一区二区三区v | 中文字幕无码日韩制服专区 | 国产欧美日韩综合精品一区二区 | 人人婷婷人人澡人人爽 | 午夜无遮挡男女啪啪免费软件 | 国产在线中文字幕 | 国产一区二区三区综合网 | 日本丰满岳乱妇在线观看 | 亚洲国产精品一区二区不卡 | 人妻一区二区三区巨免费 | 午夜精品久久影院蜜 | 在线观看不卡无码国产 | 韩国三级中文字幕hd无码 | 国产女白丝脚交视频播放 | 国产成人av大片在线观看 | 色系一区二区三区四区五区 | 国产学生真实初次破初视频网站 | 一区二区三区精品视频 | 成年免费大片黄在线观看岛国 | 国产在线98福利播放视频免费 | 国产99一区免费视 | 99精品国产自在现 | 国产在线| 亚洲国人久久精品 | 日韩激情中文字幕一区二区 | 中文字幕日本一 | 麻豆久久亚洲av | 韩国午夜理伦三级在线观看中文版 | 免费无码中文a级毛片 | 天天射天天操天天干中文字幕 | 丰满人妻跪趴高撅肥臀 | 国产一区二区成人久久免费影院 | 成全在线观看剧情电影 | 可以看av的网址 | 国产精品一区二区久久精品 | 天天av天天翘天天综合网 | 午夜理论片最新午夜理论剧 | 久久成人精品国产亚洲v蝌蚪 | 国产欧美在线一区二区三区 | 99不卡无码中文字幕在线 | 亚洲精品白丝喷白浆无码 | 高清在线精品一区二区 | 91精品全国免费观看 | 午夜精品久久久无码 | 亚洲aⅴ无码精品一区二区三区 | 亚洲无码小视频 | 亚洲av女人的天堂在线观看 | av天堂午夜精品一区 | 国产人妻人伦精品1国产盗摄 | 日本精品久久久久久久久免 | 中文字幕精品一区二 | 精品国产亚洲av麻豆 | 国产在线综合一区二区三区 | 国产良妇出轨视频在线观看 | 亚洲国产理论片秋霞 | av无码理论片在线观看免费网站 | 91午夜激情 | 亚洲av无码久久忘忧草 | 国产美女91呻吟求 | a级毛片免费高清视频 | 69视频成 | 欧美在线一区视频 | www日韩av中文字幕.com | 午夜亚洲成人福利 | 国产免费mv大片人人电影播 | 无码熟妇人妻av在线影片最多 | 欧美日韩一区二区高清不卡 | 在线播放免费播放av片 | 亚洲av成人精品一区二区三区 | 日本欧美中文字幕人在线 | 精品久久久久久久一区二区 | 中文字幕伦伦在线 | 国产mcu精品91 | 一区二区日韩 | 少妇三级| 操女优国产成人综合色在线观看网站 | 亚洲精品亚洲人成在线下载 | 欧美性狂猛xxxⅹxx吞精 | 黄一色片一网站一 | 国产精产国品一二三产区伦理电影 | 国产传媒一二三区av | 91精品一区国产高清在线gif | 国产成人亚洲综合网站小说 | 国内视频在线精品一区 | 成全视频高清免费观看电视 | 免费一级毛片不卡在线播放 | 国产中文字幕乱人伦在线 | 精品熟人妻一区二区三区四区不卡 | 无码免费午夜福利看片 | 亚洲国产欧美日韩精品一区二 | 97欧美精品系列一区二区 | 国产成人精品久久久久精品日日 | 日本a级按摩 | 麻豆av在线播放免费网站 | 国产小视频免费在线观看 | 精品日本久久久久久久久久 | 狠狠色成人一区二区三区 | 91免费无码国产在线观看i | 午夜在线 | 国内少妇人妻丰满av | 精品无码人妻一区二区三区不卡 | 国产综合这里只有精品 | 日本视频免费观看的网站 | 99精品国产兔费观看久久 | 日韩成人黄页网免费大全 | 国产口爆吞精在线观视频 | 不卡高清av手机在线观看 | 天天干天天日天天碰 | 国产欧美日韩综合 | 国产男奴sm口舌奴视频 | 99re免费视频国产在线播放 | 国产曰韩ai一区二区三区 | 亚洲精品一区二区在线 | 91影视网 | 亚洲av日韩aⅴ永久无码 | 亚洲国产精品有声 | 亚洲精品一二三四区 | 婷婷国产成人亚洲日韩精品免费视 | 中文字幕一级mv在线观看 | 在线精品国自产拍中文字幕 | 91精品无码国产在线观看 | 色婷婷我要去我去也 | 国产成人va视频在线观看 | av一级午夜无码久久精品 | 欧美日韩午夜情爱在线 | 国产一区二区三区 | 无码一区二区三区亚洲人妻 | 国产一区二区三区精品久久 | 无人在线观看免费高清 | 国产高清视频在线 | 国产成人喷潮在线观看 | 精品国产成人a区在线观看 精品国产成人t | 91亚洲午夜三级 | 亚洲熟妇无码八av | 日本最新一区二区三区免费看 | 日本香蕉一区二区在线观看 | 成人精品一区二区三区在线观看 | 91大神在线精品网址 | 国产v片在线播放免费无遮挡 | 日本一区二区三区专线 | 日本av一区二区三区视频 | 欧美极品另类ⅴideosde | 二区三区在线 | 亚洲阿v天堂在线 | 国产女人高潮抽搐喷水视频 | 欧美性受xxxx黑人xyx性爽 | 国产麻豆91| 无码欧精品亚洲日韩一区 | 精品一区二区三区视频免费观看 | 无码久久精品人妻一区二区三区 | 三级三级三级a级全黄三电影 | 国产成人精品一区二三区 | 国产激情片免费在线观看 | 国产剧情精品 | 九九动漫精品亚洲 | 精品三级av在线免费观 | 91嫩草免费国产永久入口 | 麻豆国产精品色欲av亚洲三区 | 精品一区二区在线观看国产 | 九九九色视频 | 中文字幕偷乱视频 | 91最新电影电视剧综艺动漫在线观看 | 国产tsmaya在线| 午夜精品久久久久久久99热蜜桃 | 精品少妇第一页 | 午夜啪啪啪视频 | 无码一区二区精品视频久久久春药 | 精品一区二区国语对白 | 国产亚洲福利在线视频 | 国产骚妇自慰在线 | 久久99青青精品免费观看 | 精品人妻人人做人人爽夜夜爽 | 日韩国产欧美亚洲一区不 | 日韩电影免费在线观看视频 | 91福利院 | 91精品国产丝袜在线拍 | 91蜜桃国产成人精 | 亚洲国产天堂久久综合 | 中文字幕乱码一区久久 | 亚洲av无码不卡一区二区三区 | 亚洲综合极品香蕉久久网 | 深夜成人网站 | 变态sm天 | 超碰在线97青草 | 四虎永久| 99久久精品午夜一区二区 | 亚洲成在线播放va | 亚洲av无码影视久久乐第一区 | 国内精品自产拍在线观看91 | 国产狂喷潮在线观看中文 | 在线视频欧美日韩一区 | 黑人和国产小电影 | 天天看片亚洲欧美国产 | 国产一级特黄大片在线观看 | 高跟丝袜| 欧美av色香蕉一区二区蜜桃 | 91香蕉视频免费 | 99国内自产精华 | 国产成人三级视频在线观看播放 | 性无码一区二区三区在线观看 | 不卡一区二区在线观看 | 国产白嫩精品久久 | 亚洲一区二区观看 | 国产成人久久精品二区三区 | 久久高潮 | 亚洲欧美精品中字久久99 | 亚洲日本中文字 | 99久久九九国产精 | 免费无码又爽又刺激高潮的视频 | 国产91精品一区二区麻豆亚洲 | 亚洲欧美日韩中 | 国产亚洲精品aaaa片在线播放 | 在线播放午夜理论片 | 久久99国产综合精品1 | 日本一区二区三区中文字幕 | 9ⅰ精品人妻一区二区三区蜜桃 | 日本道vs高清一区二区三区 | 韩国三级理论无码电影在线观看 | 午夜福利理论片高清在线观看 | 欧美成人精品三级网站在线观 | 91精品国产一区自在线拍 | 国产精品拍综合在线 | 麻豆国产av巨作国产剧情 | 亚洲欧美日韩久 | 久久99精品久久久久久无毒不卡 | av变态另类天堂无码专区 | 久久97人人超人人超碰超国产 | 日本中文无线码在线观看 | 四虎www| 国产精品国产三级国产专不∫ | 国内最真实的xxxx人伦 | 香蕉视频91| 岛国大片网站 | 免费一级无码婬片片毛片 | 国产人妻大战黑人20p | 99国产精品一 | 丰满人妻熟妇乱又伦 | 国产精品无码专区在线观看 | 欧美三级成人网 | 国产美女精品 | 欧美日韩国产制服在线 | 国产成人亚洲精品乱码在线 | 国内精品自线一区二区三区 | 日韩免费高清大片在线 | 91永久入口t一区二区 | 福利小视频99 | 久久成人国产精品麻豆 | 成人aⅴ综合视频国产永久观看 | 欧美一区二区三区久久综合 | 色老99久久九九爱精品69堂 | 日本一区二区三区免费在线观看 | 亚洲成a人片77777国产 | 成人午夜精品网站在线观看 | 国产精品无码大片在线观看 | 蜜臀av性久久久久蜜臀a | 中文精品免费视频 | 福利姬液液酱喷水网站在线观看 | 日语中字在线播 | 亚洲一区高清 | 国产边靠边叫麻豆av | 国产一区av麻豆免费观看 | 人人影视免费电影在线观看手机版 | 午夜淫片 | 亚洲精品tv久久久久 | 91欧美日| 国产日本在线观看 | 国产亚洲精品成 | 亚洲av中文无码乱人伦在线观看 | 国产伦子伦一 | 互换人妻中文字幕 | 日韩欧美一区二区高清完整 | 国产男人的最爱在 | 91九色在线视频 | 国产成人综合欧美精品久久 | 日本无乱码高清在线观看 | 国产丶欧美丶日韩丶不卡影视 | 日韩系列精品自拍不卡视频 | 精品视频在线免费 | 无码久久久久冒白浆 | 国产精品巨作av无遮挡 | 精油按摩性av一区二区 | 东京热视频网 | 禁止18点击进入在线观看尤物 | 国产清纯美女白浆在线播放 | 婷婷色爱区综合五月激情 | 国产乱人伦真实精品视频 | 中日精品无码一本二本三本 | 国产真实伦在线观看视频 | 亚洲午夜一级高清免费 | 天堂网果冻传媒 | 91九色在线 | 精品熟女少妇av免费看 | 一区二区三区欧美 | 日产精品一 | 午夜成人影院网站18进 | 91尤物在线视频 | 国产97人人超碰cao蜜芽国产 | 超碰97久久国产人人澡 | 色婷婷久久综合中文久久蜜桃av | 国产精品男女 | 国产视频精品免费视频 | 中文字幕无码不卡 | 丰满岳乱妇在线观看中字无码 | 国产草草影院一区二区三区 | 国产精品初高中在线播放 | 国产精品欧美日韩精品成人99影院 | 亚洲av永久纯肉无码精品动漫 | 91视频观看| 国产视频精品免费视频 | 亚洲国产成人精品综合av | 国产成人啪精品午 | 精品国产av丁香六月无码 | 无码免费真人久久 | 日本精品久久久久中文字幕5 | 午夜福利一区二区三区高清视频 | 国产麻豆剧果冻传媒兄妹蕉谈 | 国产精品h片在线播放 | 亚洲论片在线观看 | 日韩欧群交p片内射中文 | 91制片厂制作果冻传媒八夷兔子 | 国产精品无打码在线播放 | 99久久精品一区二区毛片吞精 | 午夜影院一区二区三区 | 天天综合网 | 亚洲精品成人无码中文毛片不 | 国产香蕉97碰碰久久人人蜜桃 | 激情欧美日韩一区二区 | 欧美精品偷自拍另类在线观看 | 91无限观看次数破解版安卓版 | 欧美日韩精品久久久免费观看 | 97r热在线观看视频 97se狠狠狠狠狼鲁亚洲综 | 狠狠色伊人亚洲综合网站色 | 日本xxxx色视频在线播放 | 97中文人妻免费观看 | 亚洲欧美日韩久久 | 色偷偷8888欧美精品久久 | 久久99精品一区二区三区 | 国产精品一级国产精品片 | 国产日韩欧美日韩欧美 | 波多野结衣中文字幕一区二区 | 亚洲精品欧美综合第四区 | 波多野结衣av大高潮在线观看 | 国产主播一区二区三区在线观看 | 亚洲蜜桃精久久久久久久久久久久 | 欧美疯狂做受xxxxx高潮 | 97se亚洲综合在线 | 国产精品一区二区三 | 国产精品传媒99一区二区 | 国产女人乱 | 色偷偷91久久综合噜噜噜 | 日韩成人精品二区 | 韩国激情一区二区无码在线 | 日韩精品中文字幕无码专区 | 午夜免费视频观看 | 国产午夜激无码αv毛片久久 | 精品动漫中文字幕一区二区三区 | 国产高清成人片免费播放18禁 | 国产精品毛毛在线播放 | 国产h版大片在线 | 麻豆免费观看高清完整视频 | 国产精品亚洲一区二区三区在线 | 国产精品内 | 国产精品成人亚洲一区二区 | 国产末成年女av片一区二区 | 国产日韩欧美成人 | 午夜被窝福利在 | 精品国产不卡在线观看免费 | 日韩黄色网站在线观看 | 欧美一裸交aa视频在线 | 久草国产精品视频 | 亚洲产精品va在线观看 | 97久久国产亚洲精品超碰热 | 国产一本视频在线播放 | 91大神大战高跟丝袜美女 | 日韩成人av片在线观看 | 欧美亚洲黄色一级 | 国产精品午夜 | 天天爽天天爽夜夜爽毛片 | 精品亚洲精品中文字幕乱码 | 国产日韩欧美久久一区 | 国99精品无码一区二区三区 | 3d动漫精品啪啪一区二区免费 | 国产免费福利视频一区二区 | 日韩一级a欧美成人 | a一区二区三区乱码在线 | 东京热一本到里综合不卡 | 午夜无码中文字幕影院 | 日本aⅴ深夜私人噜噜噜视频 | 亚洲av无码一区二区二三区 | 欧美一级乱理片免费观看 | 欧美性生交大片免费看a片 欧美性受xxxx黑人xyx性爽 | 中文字幕在线亚洲日韩 | 亚洲av一区二区三区四区 | 国偷自拍视频在线观看 | 亚洲av丰满熟妇在线播放 | 波多野结衣av高清 | 91国内 | 无码激情做a爰片毛片av片 | 精品无码 | 亚洲女同一区二区三区 | 国精品无码一区二区三区 | 中文字幕人成乱 | 无码人妻精品一 | 国内精品久久久久久不卡影院 | 91色视频在线观看 | 亚洲熟妇视频在线观看 | 国产精品高清一区二区三区久久你 | 成全高清| 国产在线精品一区二区三区精品 | 国产欧美日韩综合精品一区二区 | 欧美日韩免费专区在线观看 | 国产91无码网站在线观看 | 亚洲aⅴ男人的天堂在线观看 | 91网红精品 | 亚洲中文字幕无线无码 | 91福利导航 | 91免费视视频在线观看 | 欧美亚洲爆乳一区二区三区 | 国产欧美一区二区三区精品 | 亚洲精品aa片在线观看 | 欧美成人精品高清在线播放 | 成人精品一区二区户外勾搭野战 | 无码视频字幕 | 国产精品亚洲片在线观看不卡 | 香蕉视频 | 日本在线高清版卡免v | 桃色视频在线看 | 色视频www在线播放 色视频www在线播放国产人成 | 无码专区3d动漫精品一区二区 | 99精品众筹模特自拍视频 |