2010-02-27 8 views
6

이것은 C# 101에서 다루는 내용 일 수도 있지만 Google 또는 스택 오버플로 어디서나이 질문에 대한 대답을 쉽게 이해할 수 없습니다. 콤보 상자에서 텍스트 값을 반환하는 더 좋은 방법이 있나요?WPF의 ComboBox에서 텍스트 값을 가져 오는 방법은 무엇입니까?

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를 선택하고 있습니다.

답변

11

ComboBox에 ComboBoxItem이있어 SelectedValue가 ComboBoxItem을 반환하고 ToString이 ComboBox SomeValue과 같은 결과를 반환하는 것처럼 보입니다.

그런 경우가 있다면, 당신은 ComboBoxItem.Content 사용하여 콘텐츠를 얻을 수 있습니다에 ComboBox.ItemsSource을 설정,

ComboBoxItem selectedItem = (ComboBoxItem)(test_site.SelectedValue); 
string value = (string)(selectedItem.Content); 

그러나, 더 나은 방법이를 대신 ComboBoxItems의 모음으로 콤보 상자를 채우기 원하는 문자열 모음 :

test_site.ItemsSource = new string[] { "Alice", "Bob", "Carol" }; 

그러면 SelectedItem에서 현재 선택한 문자열을 직접 가져옵니다. 로드 이벤트에

string selectedItem = (string)(test_site.SelectedItem); 
+0

첫 번째 제안은 예외입니다. 'System.Windows.Controls.ListBoxItem'형식의 개체를 'System.Windows.Controls.ComboBoxItem'형식으로 캐스팅 할 수 없습니다. – Akers

+1

두 번째 제안은 훌륭하게 작동합니다. 무리 감사! – Akers

1

DependencyPropertyDescriptor dpd = DependencyPropertyDescriptor.FromProperty(ComboBox.TextProperty, typeof(ComboBox)); 

dpd.AddValueChanged(cmbChungChi, OnTextChanged); 

을 넣어 그리고 연료 소모량

private void OnTextChanged(object sender, EventArgs args) 
{ 
    txtName.Text = cmbChungChi.Text; 
} 

행운을 빕니다를 통해 텍스트를 얻는다.

관련 문제