• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

C# ComboBox SelectedText属性和SelectedValue属性理解

武飞扬头像
Angelo Zhang
帮助1

在学习 ComboBox 时,遇到如下2个问题:

SelectedValue属性总为 "null"

SelectedText值总为 ""


SelectedValue

其实官方资料已经指明了问题原因,只是第一眼看过去没有理解:

获取或设置由 ValueMember 属性指定的成员属性的值。

包含由 ValueMember 属性指定的数据源成员的值的对象。

ListControl.SelectedValue 属性

之前试验时,只是简单的通过 Item 字符串值。

而实际使用时,如果通过 comboBox 的 DataSource 属性确定数据,

数据是一个对象A,A的每一项有属性(B,C,D)。那么需要选择作为 Value 的 A的某个属性,即 comboBox 的 ValueMember。 如下例子,我创建了 Test类,Test类有 id 和 name 2个属性:

如下,选择Index为1时,回读SelectedValue,则 SelectedValue=0x10

  1.  
    IList<Test> tList = new List<Test> {
  2.  
    new Test{id=1,name="A"},
  3.  
    new Test{id=16,name="B"},
  4.  
    new Test{id=333,name="C"}
  5.  
    };
  6.  
     
  7.  
    comboBox1.DataSource = tList;
  8.  
    comboBox1.DisplayMember = "name";
  9.  
    comboBox1.ValueMember = "id";
  10.  
    comboBox1.SelectedIndex = 1;

学习自百度


SelectedText

还是学习官方资料

获取或设置 ComboBox 的可编辑部分中选定的文本。

其实关键在于,选定的文本,如官方文档所说,当丢失焦点时,也就丢失了选定

注解

可以使用该 SelectedText 属性检索或更改控件中 ComboBox 当前选定的文本。 但是,应注意,由于用户交互,所选内容可能会自动更改。 例如,如果在按钮Click事件处理程序中检索SelectedText值,该值将为空字符串。 这是因为当输入焦点从组合框移动到按钮时,会自动清除所选内容。

当组合框失去焦点时,选择点将移动到文本的开头,并且任何所选文本都变为未选中状态。 在这种情况下,获取 SelectedText 属性将检索一个空字符串,并设置该属性会将 SelectedText 指定的值添加到文本的开头。

当组合框获得焦点时,将自动选择控件中的全文。 如果调用控件 Focus 的方法来设置输入焦点,则无论控件是否已具有焦点,都会选择全文。

当用户从下拉列表中选择项目或使用向上键和向下键时,将自动选择新项的文本。 但是,如果尝试获取 SelectedText 某个 SelectedIndexChanged 或 SelectedValueChanged 事件处理程序中的值,该属性将返回一个空字符串。 这是因为,在这些事件发生时,已清除以前的 SelectedText 值,并且尚未设置新值。 若要检索某个或事件处理程序中的SelectedIndexChanged当前值,请改用该SelectedItem属性。SelectedValueChanged

所以,很简单的,给button设置个快捷键,然后选定部分comboBox的文本,则可以直接显示对应文本。如下,设置快捷键P,选定部分comboBox编辑框里的文本,按alt P,则能看到效果

  1.  
    ...
  2.  
    button1.Text = "button1&P";
  3.  
    ...
  4.  
     
  5.  
     
  6.  
    public void button1_Click(object sender, EventArgs e)
  7.  
    {
  8.  
    //comboBox1.Focus();
  9.  
    MessageBox.Show(comboBox1.SelectedText);
  10.  
    }

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhfiicck
系列文章
更多 icon
同类精品
更多 icon
继续加载