4

データベースからデータを取得し、2 つのコンボ ボックスを提供するフォームの作成に取り組んでいます。ComboBox1 には、従業員の名前が「姓名」形式で表示されます。ComboBox2 は、従業員名を「姓、名」形式で表示します。名前は問題なくコンボ ボックスに取り込まれています。

私が方法を理解しようとしているのは、ユーザーがドロップダウンボックスのいずれかから名前を選択すると、クエリからの他の情報に基づいて、textBox1、textBox2 などの特定のテキストボックスに入力されることです。

私は使用しようとしました

textBox1.Text = comboBox1.SelectedItem;

ただし、次のようなエラーが表示されます: タイプ 'オブジェクト' を '文字列' に暗黙的に変換できません。明示的な変換が存在します (キャストがありませんか?)

これが私の現在のコードです。データベースへの接続クエリなどは意図的に省略しました。

public partial class Employees : Form
{
    public Employees()
    {
        InitializeComponent();

        //Connect to database for Employees Table Headers
        SqlConnection myConnection = new SqlConnection(@"Server=Server...");

        try {
            myConnection.Open();
            string SqlDataPull = String.Format("SELECT * FROM Employees WHERE Lname IS NOT NULL {0} ORDER By Lname", (checkBox1.Checked ? "AND Active='Y'" : ""));
            SqlCommand cmd = new SqlCommand(SqlDataPull, myConnection);
            cmd.CommandType = CommandType.Text;
            SqlDataReader dr = cmd.ExecuteReader();

            while (dr.Read()) {
                string strEmployee = String.Format("{0}  {1}", dr["Fname"], dr["Lname"]);
                comboBox1.Items.Add(strEmployee);
                textBox1.Text = comboBox1.SelectedItem;
                string strEmployee2 = String.Format("{0}, {1}", dr["Lname"], dr["Fname"]);
                comboBox2.Items.Add(strEmployee2);
            }
        } catch (Exception e) {
            MessageBox.Show(e.ToString());
        } finally {
            if (myConnection != null) {
                myConnection.Dispose();
            }
        }
    }

    private void button1_Click(object sender, EventArgs e)
    {
        Main myNewForm = new Main();
        myNewForm.Show();
        this.Close();
    }

    private void button2_Click(object sender, EventArgs e)
    {
        Reports myNewForm = new Reports();
        myNewForm.Show();
        this.Close();
    }
}
4

6 に答える 6

3

には ( だけでなく)ComboBox任意のタイプの項目を入力できるため、プロパティのタイプはです。挿入した場合は、キャストして取得できますstringSelectedItemobjectstrings

string s = (string)myComboBox.SelectedItem;

class のような他のタイプのアイテムを追加した場合Person、このオブジェクトを取得するか、その文字列またはいくつかのプロパティを取得できます

Person p = (Person)myComboBox.SelectedItem;
string s = myComboBox.SelectedItem.ToString();
string lastName = ((Person)myComboBox.SelectedItem).LastName;
于 2012-07-20T15:53:46.857 に答える
2

残念ながら、これを行うことはできません:

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

結果もパスであるため:

System.Windows.Controls.ComboBoxItem: Citroen

シトロエンなどの値のみが必要です

したがって、次のような文字列を検索することで問題を解決できます。

      string auto = comboBox1.SelectedItem.ToString();
      int index = auto.IndexOf(" ");
      carModel.Text = auto.Substring(index+1);
于 2012-12-29T13:22:23.727 に答える