这可能是C#101所涵盖的内容,但我无法在google或堆栈溢出的任何地方找到这个问题的易于理解的答案。有没有更好的方法从组合框中返回文本值而不使用我想出的这种糟糕的工作?
private void test_site_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
string cmbvalue = "";
cmbvalue = this.test_site.SelectedValue.ToString();
string[] cmbvalues = cmbvalue.Split(new char[] { ' ' });
MessageBox.Show(cmbvalues[1]);
}
请不要对我进行努力,我现在真的只是拿起c#和OOP。
答案 0 :(得分:13)
看起来你的ComboBox中有ComboBoxItems,因此SelectedValue返回一个ComboBoxItem,因此ToString返回ComboBox SomeValue
之类的内容。
如果是这种情况,您可以使用ComboBoxItem.Content获取内容:
ComboBoxItem selectedItem = (ComboBoxItem)(test_site.SelectedValue);
string value = (string)(selectedItem.Content);
但是,更好的方法是将ComboBox.ItemsSource设置为所需的字符串集合,而不是使用ComboBoxItems集合填充ComboBox:
test_site.ItemsSource = new string[] { "Alice", "Bob", "Carol" };
然后SelectedItem将直接为您提供当前选定的字符串。
string selectedItem = (string)(test_site.SelectedItem);
答案 1 :(得分:1)
加载事件
DependencyPropertyDescriptor dpd = DependencyPropertyDescriptor.FromProperty(ComboBox.TextProperty, typeof(ComboBox));
dpd.AddValueChanged(cmbChungChi, OnTextChanged);
通过功能获取文字
private void OnTextChanged(object sender, EventArgs args)
{
txtName.Text = cmbChungChi.Text;
}
祝你好运。