首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将listBox项目传输到另一个listBox (Winforms C#)

将listBox项目传输到另一个listBox (Winforms C#)
EN

Stack Overflow用户
提问于 2011-05-10 13:04:51
回答 2查看 2.7K关注 0票数 0

我有两个listBoxes。第一个列表框包含交通违规的列表。当您单击add按钮并执行代码时,listbox2将获得该项"ListBoxTest.Violation",而不是从listBox1中显示的项...

我的代码出了什么问题?

代码语言:javascript
复制
namespace ListBoxTest
{
    /// <summary>
    /// Description of MainForm.
    /// </summary>
    public partial class MainForm : Form
    {
        private List<Violation> violationList = new List<Violation>();
        public MainForm()
        {
            InitializeComponent();
        }

        void MainFormLoad(object sender, EventArgs e)
        {
            LoadViolations(); // Initialize and add violations to violationList.
            listBox1.DataSource = violationList; // Set the DataSource property.
            listBox1.ValueMember = "Code";
            listBox1.DisplayMember = "Description";

        }

        void LoadViolations()
        {
            Violation violation;

            violation = new Violation("001", "Beating the red light");
            violationList.Add(violation);

            violation = new Violation("002", "Exceeding posted speed limit on the road");
            violationList.Add(violation);

            violation = new Violation("003", "Driving a vehicle without license to drive");
            violationList.Add(violation);

            violation = new Violation("004", "Driving a non registered vehicle");       
            violationList.Add(violation);

            violation = new Violation("005", "Vehicle has no plate number");
            violationList.Add(violation);
        }

        void BtnAddClick(object sender, EventArgs e)
        {
            listBox2.Items.Add(listBox1.SelectedItem); // Add item from listBox1 to listBox2;
        }
    }

    /// <summary>
    /// Violation Class
    /// Properties: Code, Description
    /// </summary>
    public class Violation
    {
        private string _code;
        private string _description;

        public Violation(string code, string description)
        {
            _code = code;
            _description = description;
        }

        public String Code
        {
            get { return _code; }
            set { _code = value; }
        }

        public String Description
        {
            get { return _description; }
            set { _description = value; }
        }
    }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-05-10 13:07:31

键入cast the selected item to Violation。这应该可以解决这个问题。编辑:我已经修改了代码来解决这个问题。

代码语言:javascript
复制
private void AddClick(object sender, EventArgs e)
{
    // Set the DataSource property.          
    listBox2.ValueMember = "Code";
    listBox2.DisplayMember = "Description";    
    listBox2.Items.Add((Violation)listBox1.SelectedItem); 
}    
票数 0
EN

Stack Overflow用户

发布于 2011-05-10 13:09:38

确保listbox2具有与listbox1相同的设置,例如listbox2.ValueMemberlistbox2.DisplayMember

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5945393

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档