将列表框项目转移到另一个列表框(Winforms C#)

将列表框项目转移到另一个列表框(Winforms C#),c#,winforms,C#,Winforms,我有两个列表框。第一个列表框包含交通违规列表。当您单击add按钮并执行代码时,listbox2得到的是这个项目“ListBoxTest.Violation”,而不是listBox1中显示的项目 我的代码有什么问题 namespace ListBoxTest { /// <summary> /// Description of MainForm. /// </summary> public partial class MainForm : F

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

我的代码有什么问题

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; }
        }
    }
}
名称空间ListBoxTest
{
/// 
///主窗体的描述。
/// 
公共部分类主窗体:窗体
{
私有列表violationList=新列表();
公共表格(
{
初始化组件();
}
void MainFormLoad(对象发送方,事件参数)
{
LoadViolations();//初始化冲突并将其添加到violationList。
listBox1.DataSource=violationList;//设置DataSource属性。
listBox1.ValueMember=“代码”;
listBox1.DisplayMember=“Description”;
}
void LoadViolations()
{
违反;
违规=新违规(“001”,“闯红灯”);
违规列表。添加(违规);
违规行为=新的违规行为(“002”,“超过道路上张贴的速度限制”);
违规列表。添加(违规);
违规行为=新的违规行为(“003”,“无驾驶执照驾驶车辆”);
违规列表。添加(违规);
违规=新违规(“004”,“驾驶未登记车辆”);
违规列表。添加(违规);
违规=新违规(“005”,“车辆无车牌号”);
违规列表。添加(违规);
}
void BtnAddClick(对象发送方,事件参数e)
{
listBox2.Items.Add(listBox1.SelectedItem);//将项目从listBox1添加到listBox2;
}
}
/// 
///违反类
///属性:代码、说明
/// 
公共类违规
{
私有字符串_码;
私有字符串描述;
公共违规(字符串代码、字符串描述)
{
_代码=代码;
_描述=描述;
}
公共字符串代码
{
获取{return\u code;}
设置{u code=value;}
}
公共字符串描述
{
获取{return\u description;}
设置{u description=value;}
}
}
}

键入将所选项目强制转换为冲突。这应该可以解决问题。 编辑:我已经修改了代码来解决这个问题

private void AddClick(object sender, EventArgs e)
{
    // Set the DataSource property.          
    listBox2.ValueMember = "Code";
    listBox2.DisplayMember = "Description";    
    listBox2.Items.Add((Violation)listBox1.SelectedItem); 
}    

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

可以接受一半的答案,另一半的答案是Splendor>:)