检索和使用在 ComboBox 中选择的值

Posted

技术标签:

【中文标题】检索和使用在 ComboBox 中选择的值【英文标题】:Retrieving and Using a Value selected in a ComboBox 【发布时间】:2021-03-03 03:33:08 【问题描述】:

目标:我有一个 GUI 和一个包含四个值的组合框。 我正在尝试获取所选数量并将其打印到具有相关颜色的文件中。

例如:如果选择了“ABC”,那么在文件中,“Value and Assigned Color ABC red”将写入该行。

我遇到了这个问题,因为我不知道如何从该组合框中检索值以在我的 GetHeader 类中使用。

额外:我正在寻找两种解决方案之一,

(1) 我按照“retrieveValueFromBox”或

(2) 以某种方式获取所选项目的索引并使用该索引来编写我需要的行。” 如果能获得一些关于如何更好地使用或学习 C# 的体面建议也很棒。

我的代码:

MainWindow.xaml

<ComboBox x:Name="myBox" ...alignment information...>
  <ComboBoxItem Content="abc" ...alignment information...>
  <ComboBoxItem Content="def" ...alignment information...>
  <ComboBoxItem Content="ghi" ...alignment information...>
  <ComboBoxItem Content="jkl" ...alignment information...>
</ComboBox>

MainWindow.xaml.cs

private void selectedItemFromBox(object sender, EventArgs e)

  ComboBox selectedValue = (ComboBox)sender;
  string selectedText = selectedValue.Text;
  OutputFile output = new OutputFile();
  output.retreiveValueFromBox(selectedText);

输出文件.cs

namespace myApplication

  class OutputFile
  
    // Stuff
  


  //public bool Write( ...args...  ) makes the call to this function.  See below
  private void GetHeader(StreamWriter w, string year, string evt)
  
    //How do I get the value from the combobox here so I can use it.
    // If it is better practice to grab the value in public bool Write() then see below
    //  Yes I understand that GetHEader's args will need to be changed

    w.WriteLine("Line 1");
    w.WriteLine("Line 2");
    w.WriteLine("Value and Assigned Color " + retreiveValueFromBox(comboBoxItem));
    w.WriteLine("Line N");

  

  private string retreiveValueFromBox(string boxText)
  
    string value_Color = "";

    //If I can just get the index of the string, I can just do a case/switch.  
    //And dump the String.Euals()

    
    if (String.Equals(boxText, "abc"))
    
      value_Color = boxText + " red");
    
    else if bString.Equals(boxText, "def")
    
      value_Color = boxText + " blue");
    
    else if String.Equals(boxText, "ghi")
    
      value_Color = boxText + " green");
    
    else if String.Equals(boxText, "jkl")
    
      value_Color = boxText + " orange");
    
    else 
    
      value_Color = "UNKNOWN yellow");
    

    return value_Color;
  


  public bool Write( ...args...  )
  

    //Stuff
    for (; idx < eventNum; )
    

      // Or Get the ComboBox Value here

      GetHeader(sWrite, year(), evt); //And pass value in here.
    

    



【问题讨论】:

SelectedItem 是一个 ComboBoxItem。 ComboBoxItem.Content 应该返回值。 您能再详细说明一下吗? 几乎明白了。 "System.Windows.Controls.ComboBox.Item:" 使用该值打印。事件处理程序仅包含“comboBoxValue = myComboBoxName.SelectedItem.ToString();”行。我假设我使用了不正确的“Selected___”东西。一旦它是 100% 将发布解决方案。 【参考方案1】:

我得到了我需要的东西。

我的问题。

组合框未正确绑定到事件。修复方法是双击 XAML 设计窗口中的组合框,该窗口在 WindowWindow.xaml.cs 的最底部创建了一个与该框相关联的事件。

private void myComboBoxName_SelectionChanged(Object sender, SelectionChangedEventArgs e)

  comboxValue = myComboBoxName.SelectedIndex.ToString();

我注意到,我以前没有注意到,有另一个函数处理来自 GUI 的信息(文件 I/O 信息)。所以我将变量“comboboxValue”放入该函数中,并一直传递它,直到它把我一直带入Outputfile.cs。

因为我只使用索引 (0, 1, 2, 3, 4)。我只是使用 Case/Switch 打印出值和分配的颜色。

【讨论】:

似乎问题已解决。也许您可以将其标记为答案。

以上是关于检索和使用在 ComboBox 中选择的值的主要内容,如果未能解决你的问题,请参考以下文章

jquery easyui combobox 添加添加选择项

Python tkinter - 从 ttk.combobox 中检索 SQLite ID。

动态改变ComboBox下拉框的宽度

jQuery EasyUI 1.4.4 Combobox无法检索中文输入的问题

使 ComboBox 2 不选择与 ComboBox 1 相同的值

获取combobox选择的值