【问题标题】:ComboBox.SelectedText doesn't give me the SelectedTextComboBox.SelectedText 没有给我 SelectedText
【发布时间】:2012-04-28 23:11:20
【问题描述】:

我正在构建一个字符串,代码看起来像

String status = "The status of my combobox is " + comboBoxTest.SelectedText

我在VS2010中使用WinForm

结果看起来像

“我的组合框的状态是”

【问题讨论】:

  • 离开焦点时,ComboBox 控件将失去选择

标签: c# winforms string combobox


【解决方案1】:

我想你想用

String status = "The status of my combobox is " + comboBoxTest.Text

来自MSDN的SelectedText属性

获取或设置在 a 的可编辑部分中选择的文本 组合框。

而来自MSDN的Text属性

获取或设置与此控件关联的文本。

【讨论】:

  • 与 comboBoxTest.SelectedItem.ToString() 有何不同
  • @CocoaDev:SelectedItem 是一个对象,也可能是一个类,因此将其转换为字符串可能不是您所需要的。当您填充组合框时,您可以将项目设置为类,因此在 SelectedItem 上观看您可以随心所欲...
  • SelectedItem 用于当您有某种与 ComboBox 关联的绑定(数据源)时。它将是一个对象,但它可以转换为 ComboBox 绑定到的底层数据(对象)类型。
【解决方案2】:

来自documentation

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

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

【讨论】:

    【解决方案3】:

    我在 5 分钟前遇到了这个问题。

    我认为一个解决方案(使用 Visual Studio 2005)是:

    myString = comboBoxTest.GetItemText(comboBoxTest.SelectedItem);
    

    如果我错了,请原谅我。

    【讨论】:

    • 就是这样!当我们为数据源设置一个类时,获取其文本是一个常见问题,这为我解决了
    • 可以给+10吗? ;) 始终提取文本的唯一方法。还有我从 VBA 中提取它的方式!
    【解决方案4】:

    我认为你不需要SelectedText,但你可能需要

    String status = "The status of my combobox is " + comboBoxTest.Text;
    

    【讨论】:

      【解决方案5】:

      要获得选定的项目,您必须使用组合框的 SELECTEDITEM 属性。由于这是一个对象,如果你想将它分配给一个字符串,你必须使用 ToString() 方法将它转换为字符串:

      string myItem = comboBox1.SelectedItem.ToString(); //this does the trick
      

      【讨论】:

        【解决方案6】:

        试试这个:

        String status = "The status of my combobox is " + comboBoxTest.text;

        【讨论】:

          【解决方案7】:

          假设您想更改标签的文本,这就是我将如何解决问题的方法

              private void comboBoxtest_SelectedIndexChanged(object sender, EventArgs e)
              {
                  var combotext = comboBoxtest.Text;
                  var status = "The status of my combo box is" + combotext;
                  label1.Text = status;
              }
          

          【讨论】:

            【解决方案8】:

            如果您将 Combobox 绑定到 KeyValuePair 之类的东西,构造函数中的属性如下...:

             DataSource = dataSource,
             DisplayMember = "Value",
             ValueMember = "Key"
            

            所以dataSource 的类型是 KeyValuePair...

            你最终不得不这样做......

              string v = ((KeyValuePair)((ComboBox)c).SelectedItem).Value;
            

            (我有一个动态表单 - 其中 c 的类型为 Control - 所以必须将其转换为 ComboBox)

            【讨论】:

              【解决方案9】:

              所有先前的答案都解释了 OP“应该”做什么。我正在解释.SelectedText 属性是什么。

              .SelectedText 属性不是combobox 中的文本。它是突出显示的文本。它与 textbox.SelectedText 属性相同。

              下图显示.SelectedText属性将等于“ort”。

              【讨论】:

                【解决方案10】:

                如果你只是想知道ComboBox 中的文本带有可编辑的文本框(或ComboBoxStyle.DropDown 样式),你可以使用这个:

                string str = comboBox.SelectedItem != null ?
                                      comboBox.GetItemText(comboBox.SelectedItem) : comboBox.Text;
                

                【讨论】:

                  【解决方案11】:

                  或试试这个代码

                   String status = "The status of my combobox is " + comboBoxTest.SelectedItem.ToString();
                  

                  【讨论】:

                  • 不,SelectedItem 是与当前选定项关联的对象,它可以是一个类,而不是字符串!!!
                  猜你喜欢
                  • 1970-01-01
                  • 2011-07-23
                  • 1970-01-01
                  • 1970-01-01
                  • 2011-03-12
                  • 1970-01-01
                  • 2012-10-10
                  • 2011-01-15
                  • 2013-12-14
                  相关资源
                  最近更新 更多