如何在文本框中显示组合框中的值

本文关键字:组合 显示 文本 | 更新日期: 2023-09-27 18:25:49

我在SQL Server数据库中有一个名为"课程"的表,其中包含60门课程。

该表包含两列:COURSE_ID (PK), COURSE_NAME

我使用存储过程从数据库中获取所有课程:

create PROC [dbo].[GET_ALL_COURSES]
AS
SELECT * FROM COURSE

并像这样填充ComboBox

public FORM_CRS()
{
    InitializeComponent();
    CMB_COURSE.DataSource = CRS.GET_ALL_COURSES();
    CMB_COURSE.DisplayMember = "COURSE_NAME";
    CMB_COURSE.ValueMember = "COURSE_ID";
}

当我点击ComboBox中的课程时,我想在TextBox中显示该课程的COURSE_ID,但我不知道如何显示。

如何在文本框中显示组合框中的值

使用组合框创建一个事件,例如onSelectedIndexChanged。。

void cmbCourse_onSelectedIndexChanged(object sender,EventArgs e) {
yourTextBoxName.Text=CMB_COURSE.SelectedItem.ToString();}

填充ComboBox:后立即订阅SelectedValueChanged事件

CMB_COURSE.DataSource = CRS.GET_ALL_COURSES();
CMB_COURSE.DisplayMember = "COURSE_NAME";
CMB_COURSE.ValueMember = "COURSE_ID";
CMB_COURSE.SelectedValueChanged += (s, e)
    => textBox1.Text = CMB_COURSE.SelectedValue.ToString();

ComboBox中的选择发生变化时,TextBox将显示当前的COURSE_ID值。

CMB.Click(object sender, EventArgs e) //click, changedvalue or something else what you want - change it for your neccesity
{
    txt.Text = ((ComboBoxItem)CMB_COURSE.SelectedItem).Content.ToString();
    //or, i can't test it now, well do it and edit this answer
    txt.Text = CMB_COURSE.SelectedValue.ToString();
    //or:
    DataRowView row = (DataRowView)CMB_COURSE.SelectedItem;
    if (row != null)
    {
         txt.Text = row[0] + " " + row[1];
    }
}

最后一个解决方案是:https://stackoverflow.com/a/8518930/3810460

首先,我认为您应该将此链接作为引用进行检查。

接下来,假设这段代码与您要查找的内容相匹配:

    private List<Course> Courses = new List<Course>();
    public Form1()
    {
        InitializeComponent();
        Courses.Add(new Course("Computer Science",1));   
        Courses.Add(new Course("English", 2));
        Courses.Add(new Course("Art", 3));
        Courses.Add(new Course("Biology", 4));
        Courses.Add(new Course("Philosophy", 5));
        Courses.Add(new Course("Humanities", 6));
        CourseCB.DataSource = Courses;
        CourseCB.SelectedText = Courses.ElementAt(0).CourseName;
        CourseCB.DisplayMember = "CourseName";
        CourseCB.ValueMember = "CourseID";
    }
    private void OnValueChanged(object sender, EventArgs e)
    {
        if (CourseCB.SelectedIndex != -1)
        {
            CourseIDTB.Text = CourseCB.SelectedValue.ToString();
        }
    }
    public class Course
    {
        private string myCourseName;
        private int myCourseID;
        public string CourseName
        {
            get { return this.myCourseName; }
            set { this.myCourseName = value; }
        }
        public int CourseID
        {
            get { return this.myCourseID; }
            set { this.myCourseID = value; }
        }
        public Course(string name, int ID)
        {
            this.CourseName = name;
            this.CourseID = ID;
        }
    }

您有正确的格式,但要正确使用它,您需要将不是SQL引用的对象的属性值提供给DisplayMember和ValueMember值。

我建议您执行查询,然后将值插入到Course对象中,这样您就可以使用此代码。