2017-11-10 9 views
3

よりも、コンボボックスの値を取得するにはどうすればコンボボックスcmbCoursesを持っていると私は私のこのコードではなく、テキスト

var _courses = new DatabaseHandler().GetAllCourses(); 
      foreach (var a in _courses) 
      { 
       ComboBoxItem item = new ComboBoxItem(); 
       item.Text = a.Value; 
       item.Value = a.Key; 

       cmbCourses.Items.Add(a.Value); 
      } 

public Dictionary<int, String> GetAllCourses() 
    { 
     Dictionary<int, String> courses = new Dictionary<int, String>(); 

     var connection = DatabaseConnector.Instance(); 

     if(connection.IsConnect()) 
     { 
      connection.Connection.Open(); 
      string query = "SELECT * FROM courses"; 
      cmd = new MySqlCommand(query, connection.Connection); 
      cmd.Prepare(); 
      var result = cmd.ExecuteReader(); 

      while(result.Read()) 
      { 
       courses.Add(result.GetInt16(0), result.GetString(1)); 
      } 
     } 
     connection.Connection.Close(); 

     return courses; 
    } 

を移入しています。しかし、私が取得しようとすると、それは、このコード

MessageBox.Show(cmbCourses.SelectedItem.ToString()); 
を使用して の値を代わりに示しキーイング
+2

ですつまり、あなたは( ''探しているもの(ComboboxItem)cmbCourses.SelectedItem).Value''?しかし、もし私が間違っていないと、 '' SelectedValue''メンバーも存在するはずです。 '' cmbCourses.SelectedValue''を使用してください。 –

+0

Strange! '((ComboboxItem)cmbCourses.SelectedItem).Value'これは私に正解ですが、' cmbCourses.SelectedValue'はまだヌルオブジェクトを示しています – Alen

+0

'' ValueMember''を '' cmbCourses.ValueMember = "Value"; ''に設定しようとしました。 –

答えて

1

あなただけに値を追加していますComboBoxDisplayMemberPathSelectedValuePath性質をComboBoxKeyValuePairを追加し、設定します。

var _courses = new DatabaseHandler().GetAllCourses(); 
foreach (var a in _courses) 
{ 
    cmbCourses.Items.Add(a); 
} 
cmbCourses.DisplayMemberPath = "Value"; 
cmbCourses.SelectedValuePath = "Key"; 

あなたは、このように選択した項目のキーを取得することができます:

var item = cmbCourses.SelectedItem as KeyValuePair<int, String>; 
if (item != null) 
    MessageBox.Show(item.Key); 
1

あなたが表示テキストではなく、値を取得するにはGetValueメソッド()メソッドを使用することができます。

MessageBox.Show(cmbCourses.GetValue().ToString()); 
+1

'GetValue()'メソッドがありません – Alen

1

cmbCourses.Items.Add(item);

次にあなたが値を取得するには、このラインを使用することができます:

あなたはこれを試すことができます、あなたは、この行 cmbCourses.Items.Add(a.Value);でのみ値を追加している、あなたのコンボボックスに項目を追加することで問題を抱えているようです
MessageBox.Show(cmbCourses.SelectedValue.ToString()); 

は、あなたのコンボボックスのためにこれらを設定することを忘れないでください:

cmbCourses.DisplayMember = "YOUR DISPLAY FIELD NAME"; 
cmbCourses.ValueMember = "YOUR VALUE FIELD NAME"; 
+0

ニースが見つかりました。彼は 'a.Value'を追加していません。 –

+0

神!私はそれをしましたが、それはまだヌルオブジェクトを言う! – Alen

+0

@Alen - 更新された答えを確認してください –

関連する問題