ComboBo有几个不同的属性用来获取当前选取的选项_第1页
ComboBo有几个不同的属性用来获取当前选取的选项_第2页
ComboBo有几个不同的属性用来获取当前选取的选项_第3页
ComboBo有几个不同的属性用来获取当前选取的选项_第4页
ComboBo有几个不同的属性用来获取当前选取的选项_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

ComboBox有几个不同的属性用来获取当前选取的选项:ComboBoxl.Text、ComboBoxl.SelectedIndex、ComboBoxl.SelectedItem、ComboBoxl.SelectedText、ComboBoxl.SelectedVaiue。SelectedIndex获取的是选中项的索引,从0开始;SelectedItem获取的是选中项本身,这里返回的Object类型的一个对象,不一定是选中项的文本。比如现在我们将ComboBox绑定到一个DataReader上,如果我们使用SelectedItem.ToString()的话,返回的是:System.Data.DataRowView,这表明返回的是一个System.Data.DataRowView的对象,然后转换为Object返回。SelectedVilue获取或设置由VilueMember属性指定的成员属性的值(MSDN)。即是说要绑定了数据源之后才能使用这个属性。SelectedText获取或设置ComboBox的可编辑部分中选定的文本(MSDN)。为了测试这个属性,我们使用一个click进行测试,返回的是一个空字符串,关于这个原因,MSDN的解释是:當下拉式方塊失去焦點時,選取範圍點就會移至文字的開頭,而任何原本選取的文字就會變成未選取狀態。在這個範例中,取得SelectedText屬性就會擷取空字串,而設定SelectedText屬性就會將指定的值加入至文字的開頭。(/zh-cn/library/bobox.selectedtext(zh-tw).aspx))再用SelectedIndexChanged事件进行测试,结果还是空字符串,原因是:當使用者選取下拉式清單中的項目,或使用向上鍵和向下鍵,就會自動選取新項目的文字。但是,當您嘗試取得SelectedIndexChanged或SelectedValueChanged事件處理常式中的SelectedText值時,這個屬性會傳回一個空字串。這是因為在這些事件發生時,先前的SelectedText值已經被清除,而且新的值尚未設定。若要擷取SelectedIndexChanged或SelectedValueChanged事件處理常式中目前的值,請改用SelectedItem屬性。(/zh-cn/library/bobox.selectedtext(zh-tw).aspx))最后用MouseUp进行测试(以下的测试是DropDownStyle设置为Simple进行的,用一个文本框显示返回结果),这次返回的就是选定的文本了。选择不同的选项后返回不同选项的文本,测试成功,按照上面的说法,是因为在鼠标释放后心的值已经设定好了,为了看看猜测是否正确,在用一个MouseDown事件进行测试,这次点击不同的选项后结果明显不同,结果是“一闪而过”,因为我们用的是鼠标按下的事件,那么这次按紧鼠标不放,可以看到显示的结果是上一个选项的值,放开鼠标后显示的结果又是一片空白了,由此可见,新的值的设定是在鼠标按下之后,放开之前设定的,由于无法看到源代码,所以这里仅仅是猜测而已。Text,这个属性返回是我们选定的项的文本,如果想要获取的是选中的项的文本的话最好使用这个属性。C#ComboBoX^本用法2011年3月2日評論發表評論新增Itemviewsourceprint?comboBoxl.Items.Add(”項目、1");移除一個Itemviewsourceprint?comboBox1.Items.Remove(”項目1");comboBox1.Items.RemoveAt(index);移除全部Itemviewsourceprint?1comboBox1.Items.Clear();設定選取項目viewsourceprint?comboBox1.SelectedIndex =1index;comboBox1.SelectedItem="項目1";查看MSDN可以看到選取項目時,有下列幾個相關的屬性:Selected】ndex:取得或設定目前選取項目的索引。(覆寫ListControl.SelectedIndex。)SelectedItem:取得或設定目前在ComboBox中選取的項目。SelectedValue:取得或設定ValueMember屬性指定的成員屬性值。(繼承自ListControl)。SelectedText:取得或設定在ComboBox可編輯部分中選取的文字。SelectedText一般較少用到,相當於選取的文字,但在觸發SelectedIndexChanged事件時會被清空,所以如果在SelectedIndexChanged事件中抓取SelectedText的值都會是空值如果想要選取指定項目時可以獲取對應的值時,就要利用SelectedValue屬性

010203040506070809101112131415161718SelectedValue不能直接使用,需設定ValueMember才能使用,要設定ValueMember首先要先自行定義一個類別,這類別裡要有2個屬性,用來對應到DisplayMember和ValueMemberviewsourceprint?publicclassComboItem{privatestring_displayText;privateint_value;publicComboItem(stringtext,intvalue){=text;this._displayTextthis._value=value;}publicstringDisplayText{get{return_displayText;}}publicintvalue{get{return_value;}}}接者引入System.Collections並載入宣告一個ArrayList,並新增Comboitem至該ArrayList

viewsourceprint?1212345=newArrayList();for(inti=0;i<10;i++){comboItemArray.Add(newComboItem(” 項 目"+i.ToString(),i));}最後將ComboBox的DataSource設為comboItemArray,DisplayMember設為DisplayText,ValueMember設為Value即可viewsourceprint?comboBox.DataSource=comboItemArray;comboBox.DisplayMember="DisplayText";comboBox.ValueMember="Value";如此就可以用SelectedValue來取得選取項目對應的值viewsourceprint?label.Text="SelectedValue:"+comboBox.SelectedValue1+"\n\r";而此時SelectedItem所取得的值為一個Object,如果要對其作操作,需先轉型成ComboItemviewsourceprint?1label.Text = ((ComboItem)comboBox.SelectedItem).DisplayText;範例完整程式碼:viewsourceprint?01usingSystem;usingSystem.Collections.Gener02ic;03usingSystem.ComponentModel;04usingSystem.Data;usingSystem.Drawing05;06usingSystem.Linq;usingSystem.Text07;08usingSystem.Windows.Forms;

0910111213141516171819202122232425262728293031323334usingSystem.Collections;namespaceWinFormTest{publicpartialclassForm1:Form{publicForm1(){InitializeComponent();for(inti=0;i10;i++){comboBox1.Items.Add("ABC"+i.ToString());}comboBox1.SelectedIndex=0;ArrayList comboItemArray=newArrayList();for(inti=0;i10;i++){comboItemArray.Add(newComboItem("ABC"+i.ToString(),(1000+i)));}comboBox2.DataSource =comboItemArray;comboBox2.DisplayMember="DisplayText";comboBox2.ValueMember

="Value";}privatevoidcomboBox1_SelectedIndexChanged(objectsender,EventArgse){TOC\o"1-5"\h\zlabel1.Text ="SelectedIndex :comboBox1.SelectedIndex.ToString()+"\n\r"+"SelectedText : "+comboBox1.SelectedText+"\n\r"+"SelectedValue : "+comboBox1.SelectedValue+"\n\r"+"SelectedItem : "+comboBox1.SelectedItem+"\n\r";}privatevoidcomboBox2_SelectedIndexChanged(objectsender,EventArgse){TOC\o"1-5"\h\zlabel2.Text ="SelectedIndex :comboBox2.SelectedIndex.ToString()+"\n\r"+"SelectedText : "+comboBox2.SelectedText+"\n\r"+"SelectedValue : "+comboBox2.SelectedValue+"\n\r"+"SelectedItem :((ComboItem)comboBox2.SelectedItem).DisplayText+"\n\r";}privatevoidtimer1_Tick(objectsender,EventArgse){label3.Text="";label3.Text ="CB1 SelectedText: "+353637383940414243444546474849505152535455565758"+"+"+comboBox1.SelectedText+"\n\r""+"+"++"CB2SelectedText:596061626364656667686970717273747576777879808182comboB

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论