日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

WPF 中设置Combox下拉框Text 显示值

發(fā)布時間:2023/12/18 asp.net 53 豆豆
生活随笔 收集整理的這篇文章主要介紹了 WPF 中设置Combox下拉框Text 显示值 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

最近在寫一個WPF客戶端的一個小程序,其中有個小需求如下:

  • 展示下拉列表里面有樹形結(jié)構(gòu)
  • 點(diǎn)擊下拉子項(xiàng)時同時顯示父級和子級文本
  • 也就是說在DisplayMember 中有兩種顯示方式

  • 下拉列表顯示時,顯示的是DisplayMember 的值
  • 點(diǎn)擊選中子項(xiàng)時,需要計算子級和父級的文本并進(jìn)行拼接,然后顯示在combox 中
  • 一開始沒有多想就想應(yīng)該直接設(shè)置combox.Text 不就可以搞定了么,問題很簡單的嘛!于是就設(shè)置了下

    發(fā)現(xiàn)不起作用!最后查了msdn 說是combox 的 IsEditable=true 時 設(shè)置下拉框的Text才有效,于是就啟用了IsEditable,運(yùn)行調(diào)試發(fā)現(xiàn)仍然沒有卵用!!

    問題來了,怎么搞?那換個思路,重寫Combox ??我覺得太麻煩,就沒有往這方面想,畢竟界面用的沒有幾個下拉框。那有沒有什么先簡單的方式呢?

    我的思路:

    ? ? 使用Textbox做高寬統(tǒng)一放置在Combox的上方,漏出下拉框的下拉箭頭,把Textbox做成透明層(這里不是界面透明,是事件穿透哦),把Combox 與Textbox 分組為一組Gird中 做好高寬自動同步拉伸,注意在控件命名的時候最好有規(guī)律哦,后面要用到的。

    xaml如下:

    <Grid Margin="62,4,220,33"><ComboBox x:Name="cmbCategoryAdd1"/><TextBox IsReadOnly="True" x:Name="txtcmbCategoryAdd1" Text="" Margin="0,0,18,0"/></Grid>

    顯示如下

    選擇:? 未選擇:

    有沒有感覺很逼真,其實(shí)上方是Textbox,好吧,現(xiàn)在要把Textbox 做成透明層代碼如下:

    TextBox text = window.GetControlByName<TextBox>("txt" + comboBox.Name);text.Text = comboBox.GetComboxSelectedValue();text.IsHitTestVisible = false;//設(shè)置文本框?yàn)橥该鲗?/span>

    這就把Textbox 設(shè)置為透明層啦!下面來做下拉框選中以后改變Textbox 的值:

    //下拉框選擇變化時發(fā)生comboBox.SelectionChanged+=new SelectionChangedEventHandler((sender, args) =>{TextBox text2 = window.GetControlByName<TextBox>("txt" + comboBox.Name);text2.Text = comboBox.GetComboxSelectedValue();});

    代碼里的window就是當(dāng)前窗口(this),GetControlByName 也貼出來

    #region 根據(jù)控件名稱,查找控件/// <summary>/// 根據(jù)控件名稱,查找控件/// </summary>public static T GetControlByName<T>(this Window obj, string elementName) where T : FrameworkElement{return ((T)obj.FindName(elementName));}#endregion 現(xiàn)在查看下效果

    嗯,不錯,效果還是很滿意的,沒有重寫Combox,這樣放置個透明Textbox 簡單兩句代碼就可以實(shí)現(xiàn)啦。小東西,目的是為了培養(yǎng)自己寫博客的習(xí)慣。

    ?

    轉(zhuǎn)載于:https://www.cnblogs.com/nodes/p/8681969.html

    總結(jié)

    以上是生活随笔為你收集整理的WPF 中设置Combox下拉框Text 显示值的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。