亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

C#實現帶搜索功能的ComboBox

2020-01-24 00:57:32
字體:
來源:轉載
供稿:網友

帶搜索的ComboBox就是給ComboBox一個依賴屬性的ItemSource,然后通過數據源中是否包含要查詢的值,重新給ComboBox綁定數據源。

public class EditComboBox : ComboBox  {    private bool t = true;//首次獲取焦點標志位    private ObservableCollection<object> bindingList = new ObservableCollection<object>();//數據源綁定List    private string editText = "";//編輯文本內容    /// <summary>    /// 注冊依賴事件    /// </summary>    public static readonly DependencyProperty ItemsSourcePropertyNew = DependencyProperty.Register("MyItemsSource", typeof(IEnumerable), typeof(EditComboBox), new FrameworkPropertyMetadata(new PropertyChangedCallback(ValueChanged)));    /// <summary>    /// 數據源改變,添加數據源到綁定數據源    /// </summary>    /// <param name="d"></param>    /// <param name="e"></param>    private static void ValueChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)    {      EditComboBox ecb = d as EditComboBox;      ecb.bindingList.Clear();      //遍歷循環操作      foreach (var item in ecb.MyItemsSource)      {        ecb.bindingList.Add(item);      }    }    /// <summary>    /// 設置或獲取ComboBox的數據源    /// </summary>    public IEnumerable MyItemsSource    {      get      {        return (IEnumerable)GetValue(ItemsSourcePropertyNew);      }      set      {        if (value == null)          ClearValue(ItemsSourcePropertyNew);        else          SetValue(ItemsSourcePropertyNew, value);      }    }    /// <summary>    /// 重寫初始化    /// </summary>    /// <param name="e"></param>    protected override void OnInitialized(EventArgs e)    {      base.OnInitialized(e);      this.IsEditable = true;      this.IsTextSearchEnabled = false;      this.ItemsSource = bindingList;    }    /// <summary>    /// 下拉框獲取焦點,首次搜索文本編輯框    /// </summary>    /// <param name="e"></param>    protected override void OnGotFocus(RoutedEventArgs e)    {      if (t)        FindTextBox(this);      else        t = false;    }    /// <summary>    /// 搜索編輯文本框,添加文本改變事件    /// </summary>    /// <param name="obj"></param>    private void FindTextBox(DependencyObject obj)    {      for (int i = 0; i < VisualTreeHelper.GetChildrenCount(obj); i++)      {        DependencyObject child = VisualTreeHelper.GetChild(obj, i);        if (child!=null && child is TextBox)        {          //注冊文本改變事件          (child as TextBox).TextChanged += EditComboBox_TextChanged;        }        else        {          FindTextBox(child);        }      }    }    /// <summary>    /// 文本改變,動態控制下拉條數據源    /// </summary>    /// <param name="sender"></param>    /// <param name="e"></param>    private void EditComboBox_TextChanged(object sender, TextChangedEventArgs e)    {      TextBox tb = sender as TextBox;      if(tb.IsFocused)      {        this.IsDropDownOpen = true;        if (editText == this.Text)          return;        editText = this.Text;        SetList(editText);      }    }    /// <summary>    /// 組合框關閉,數據源恢復    /// </summary>    /// <param name="e"></param>    protected override void OnDropDownClosed(EventArgs e)    {      base.OnDropDownClosed(e);      if (MyItemsSource == null)        return;      foreach (var item in MyItemsSource)      {        if (!bindingList.Contains(item))          bindingList.Add(item);      }    }    /// <summary>    /// 過濾符合條件的數據項,添加到數據源項中    /// </summary>    /// <param name="txt"></param>    private void SetList(string txt)    {      try      {        string temp1 = "";        string temp2 = "";        if (MyItemsSource == null)          return;        foreach (var item in MyItemsSource)        {          temp1 = item.GetType().GetProperty(this.DisplayMemberPath).GetValue(item, null).ToString();          if (string.IsNullOrEmpty(this.SelectedValuePath))          {            temp2 = "";          }          else          {            temp2 = item.GetType().GetProperty(this.SelectedValuePath).GetValue(item, null).ToString();          }          if(temp1.Contains(txt)||temp2.StartsWith(txt))          {            if (!bindingList.Contains(item))              bindingList.Add(item);          }          else if (bindingList.Contains(item))          {            bindingList.Remove(item);          }        }      }      catch (Exception ex)      {        MessageBox.Show(ex.ToString());      }    }  }

調用方法就是將數據源綁定到MyItemsSource上,剩下的就和原有的ComboBox用法一樣了。

復制代碼 代碼如下:
<local:EditComboBox MyItemsSource="{Binding ProList,Mode=TwoWay}" SelectedItem="{Binding Selpro,Mode=TwoWay}" SelectedValuePath="Id" DisplayMemberPath="Name"/>

效果演示

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲色图综合网| 奇米一区二区三区四区久久| 91精品成人久久| 亚洲成人网久久久| 国产精品96久久久久久又黄又硬| 日本久久中文字幕| 日韩欧亚中文在线| 欧美日本高清视频| 欧美日韩亚洲成人| 91香蕉嫩草神马影院在线观看| 中文字幕日韩欧美| 2019国产精品自在线拍国产不卡| 欧美日韩亚洲一区二区三区| 最近2019中文字幕在线高清| 中文字幕亚洲一区在线观看| 国产欧美中文字幕| 欧美性xxxx| 亚洲xxxx3d| 欧美一区二区三区精品电影| 国产精品视频网| 欧美午夜精品在线| 亚洲一区二区三区四区在线播放| 中文字幕日韩在线观看| 欧美丰满少妇xxxx| 欧美一级大胆视频| 一区二区欧美在线| 91色在线视频| 久久精品电影一区二区| 欧美性色视频在线| 97在线免费观看| 91久久中文字幕| 国产精品视频免费在线观看| 欧美—级a级欧美特级ar全黄| 国产精品一区二区三区免费视频| 国产精品一区二区三区久久| 欧美xxxx做受欧美.88| 亚洲www在线| 91精品成人久久| 日本免费在线精品| 姬川优奈aav一区二区| 欧美性受xxxx白人性爽| 欧美在线观看网站| 全亚洲最色的网站在线观看| 日韩av片永久免费网站| 国产91av在线| 68精品国产免费久久久久久婷婷| 国产亚洲精品美女| 欧美激情国产日韩精品一区18| 国产成人精品av在线| 日韩av在线免费播放| 97超级碰碰碰久久久| 日韩视频免费中文字幕| 欧美日韩中文字幕在线视频| 亚洲人成网站777色婷婷| 国产精品国产三级国产专播精品人| 中文精品99久久国产香蕉| 亚洲精品wwww| 日本道色综合久久影院| xxxx欧美18另类的高清| 色老头一区二区三区在线观看| 欧美一区二三区| 国产日本欧美一区二区三区| 成人久久久久爱| 亚洲bt天天射| 日韩高清免费在线| 91精品视频在线| 日韩欧美中文免费| 日韩中文在线视频| 国产手机视频精品| 欧美孕妇孕交黑巨大网站| 69久久夜色精品国产69乱青草| 国产在线98福利播放视频| 国内精品400部情侣激情| 日韩亚洲成人av在线| 国产成人精品日本亚洲专区61| 成人黄色免费在线观看| 国产精品久久久久免费a∨大胸| 久久久久久久一区二区| 国产精品久久久久久久美男| 久久久999精品免费| 在线观看国产成人av片| 国产亚洲精品综合一区91| 亚洲第一福利视频| 中文字幕自拍vr一区二区三区| 日韩人在线观看| 欧美疯狂做受xxxx高潮| 亚洲精品日韩在线| 日韩免费在线视频| 色综合老司机第九色激情| 精品久久久一区二区| 欧美电影免费在线观看| 亚洲欧美日韩精品久久奇米色影视| 久久久久久这里只有精品| 亚洲男人天堂网| 国产精品电影网| 色综合老司机第九色激情| 国产不卡精品视男人的天堂| 91精品视频免费| 欧美成人四级hd版| 福利精品视频在线| 久久99国产精品自在自在app| 91精品国产99久久久久久| 日韩在线观看免费高清完整版| 中文字幕成人精品久久不卡| 午夜精品福利在线观看| 欧美www视频在线观看| 欧美裸身视频免费观看| 国产在线观看一区二区三区| 在线观看国产精品91| 色哟哟网站入口亚洲精品| 欧洲亚洲妇女av| 91在线观看免费观看| 红桃av永久久久| 久久综合免费视频影院| 亚洲电影免费观看高清| 久久久日本电影| 宅男66日本亚洲欧美视频| 狠狠色噜噜狠狠狠狠97| 国产欧美久久久久久| 国产精品久久久久久婷婷天堂| 欧美视频在线免费看| 亚洲国产精品悠悠久久琪琪| 日韩av手机在线观看| 亚洲娇小xxxx欧美娇小| 欧美大片第1页| 精品一区二区亚洲| 久久久久日韩精品久久久男男| 精品网站999www| 三级精品视频久久久久| 亚洲午夜国产成人av电影男同| 亚洲视频在线视频| 日韩精品视频三区| 性欧美视频videos6一9| 色综合久久久888| 激情av一区二区| 国产精品久久久久久久app| 亚洲аv电影天堂网| 国产日韩中文在线| 国产精品白丝av嫩草影院| 亚洲欧美成人网| 91日本在线观看| 日韩在线视频网站| 91中文精品字幕在线视频| 日韩欧美成人精品| 亚洲精品国产精品乱码不99按摩| 亚洲国产精品人人爽夜夜爽| 亚洲 日韩 国产第一| 精品少妇v888av| 97精品一区二区三区| 亚洲国产黄色片| 欧美在线视频免费| 欧美高清视频在线观看| 国产精品自产拍在线观| 97在线观看视频国产| 日本a级片电影一区二区| 美女扒开尿口让男人操亚洲视频网站| 国产日韩精品视频| 欧美性猛交99久久久久99按摩| 91产国在线观看动作片喷水| 国产精品福利网| 91在线精品视频| 91情侣偷在线精品国产| 亚洲欧美另类人妖| 欧美最顶级丰满的aⅴ艳星|