我想实现一个比ListBox效果更高一点的效果,就是在这个ListBox绑定值以后,一般是显示这个值,我想在这个显示值的后面再加上两个单选按钮,可选择,要得到这个状态,各位大侠有没有做过这方面的东西呀,在线等

解决方案 »

  1.   

    你可以在他的DataSourceChanged事件编写这些动作啊,
      

  2.   

    是给这一项加值?问题是listbox只是显示字符串吧,listview貌似也没这个功能,在事件里面写什么?
      

  3.   

    那你不如换个思路,用DataGridView来实现,控件外观可以做得很相似,去掉网格线,去掉行头和列头,然后再加一个CheckBox的列或者RadioBox的列就可以了,而且选中不选中状态的值也可以获得
      

  4.   


            private void Form1_Load(object sender, EventArgs e)
            {
                //测试数据源,可以用你数据库的记录替换掉
                DataTable dt = new DataTable();
                dt.Columns.Add("id", typeof(int));
                dt.Columns.Add("name", typeof(string));            for (int i = 1; i < 4; i++)
                {
                    DataRow dr = dt.NewRow();
                    dr["id"] = i;
                    dr["name"] = "第" + i + "个元素";
                    dt.Rows.Add(dr);
                }
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    //将文字和按钮布局化,美化工作自己去完成
                    TableLayoutPanel tlp = new TableLayoutPanel();
                    tlp.ColumnCount = 2;
                    tlp.RowCount = 1;
                    tlp.Width = flowLayoutPanel1.Width;
                    tlp.Height = 30;
                    tlp.BackColor = Color.Red;                Label lblName = new Label();
                    lblName.Text = dt.Rows[i]["name"].ToString();
                    lblName.Name = dt.Rows[i]["id"].ToString();                Button bt = new Button();
                    bt.Text = "选择";
                    bt.Name = lblName.Name;
                    bt.Width = 60;
                    bt.Click += new EventHandler(bt_Click);                tlp.Controls.Add(lblName);
                    tlp.Controls.Add(bt);
                    flowLayoutPanel1.Controls.Add(tlp);
                }
                flowLayoutPanel1.AutoScroll = true;
            }        void bt_Click(object sender, EventArgs e)
            {
                Button bt = (Button)sender;
                MessageBox.Show("你选择的元素是" + bt.Name);
            }
    美化工作自己去完成,Form上面扔一个flowLayoutPanel就行了,这个实例仅供参考,自行扩展!