2011-02-22 5 views
2

Salut Je suis un étudiant que quelqu'un sait après avoir rempli la combobox avec les valeurs de la base de données. Comment afficher la même valeur dans la zone de texte. Lorsque je sélectionne un nom dans la liste déroulante, le même nom doit apparaître dans la zone de texte J'utilise l'élément sélectionné. Voici le code.combobox avec pour chaque boucle

Je reçois l'erreur l'erreur suivante en utilisant la boucle foreach

foreach ne peut pas fonctionner sur des variables de type « objet » parce que « l'objet » ne contient pas de définition publique pour « GetEnumerator »

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 
using System.Data.OleDb; 

namespace DBExample 
{ 
    public partial class Form1 : Form 
    { 
     private OleDbConnection dbConn; // Connectionn object 
     private OleDbCommand dbCmd;  // Command object 
     private OleDbDataReader dbReader;// Data Reader object 
     private Member aMember; 
     private string sConnection; 
     // private TextBox tb1; 
     // private TextBox tb2; 

     private string sql; 
     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void Form1_Load(object sender, EventArgs e) 
     { 
      try 
      { 
       // Construct an object of the OleDbConnection 
       // class to store the connection string 
       // representing the type of data provider 
       // (database) and the source (actual db) 
       sConnection = 
        "Provider=Microsoft.Jet.OLEDB.4.0;" + 
        "Data Source=c:member.mdb"; 
       dbConn = new OleDbConnection(sConnection); 
       dbConn.Open(); 

       // Construct an object of the OleDbCommand 
       // class to hold the SQL query. Tie the 
       // OleDbCommand object to the OleDbConnection 
       // object 
       sql = "Select * From memberTable Order " + 
         "By LastName , FirstName "; 
       dbCmd = new OleDbCommand(); 
       dbCmd.CommandText = sql; 
       dbCmd.Connection = dbConn; 

       // Create a dbReader object 
       dbReader = dbCmd.ExecuteReader(); 

       while (dbReader.Read()) 
       { 
        aMember = new Member 
          (dbReader["FirstName"].ToString(), 
          dbReader["LastName"].ToString(), 
          dbReader["StudentId"].ToString(), 
          dbReader["PhoneNumber"].ToString()); 

        // tb1.Text = dbReader["FirstName"].ToString(); 
        // tb2.Text = dbReader["LastName"].ToString(); 

        // tb1.Text = aMember.X().ToString(); 


        //tb2.Text = aMember.Y(aMember.ID).ToString(); 

        this.comboBox1.Items.Add(aMember.FirstName.ToString()); 

        // this.listBox1.Items.Add(aMember.ToString()); 
        // MessageBox.Show(aMember.ToString()); 
        // Console.WriteLine(aMember.ToString()); 
       } 
       dbReader.Close(); 
       dbConn.Close(); 
      } 

      catch (System.Exception exc) 
      { 
       MessageBox.Show("show" + exc); 
      } 
     } 
     private void DbGUI_Load(object sender, EventArgs e) 
     { 

     } 


     private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) 
     { 

      this.textBox1.Text = comboBox1.SelectedItem.ToString(); 

      textBox2.Text = string.Empty; 
      foreach (var item in comboBox1.SelectedItem) 
       textBox2.Text += item.ToString(); 
     } 


     private void textBox2_TextChanged(object sender, EventArgs e) 
     { 

     } 

     private void textBox1_TextChanged(object sender, EventArgs e) 
     { 

     } 
    } 






} 
+2

Votre boucle n'a pas de sens. Lorsque vous écrivez du code, vous devez comprendre ce que vous essayez d'accomplir et comment le code va l'accomplir. – SLaks

+0

Pouvez-vous corriger la mise en forme du code? Une partie du code n'est pas en cours de formatage. – RQDQ

+0

http://stackoverflow.com/questions/5060300/combobox-examples – SLaks

Répondre

4

Vous avez juste besoin de changer la boucle foreach pour:

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) 
     { 

      this.textBox1.Text = comboBox1.SelectedItem.ToString(); 

      textBox2.Text = string.Empty; 
      foreach (var item in comboBox1.Items) 
       textBox2.Text += item.ToString(); 
     } 
1

foreach ci-dessus (point var dans comboBox1.Items) ite m.ToString() retourne juste le type de système

l'exemple ci-dessous a fonctionné pour moi de trouver celui que je avais besoin

foreach(DataRowView item in cmbUser.Items) 
{ 
    if(item.Row[0].ToString() == "something")\\gets value displayed 
    { 
     //do something 
    } 
} 
Questions connexes