在DataGridView上的指定单元格创建ComBox

来源:互联网 发布:淘宝申请退款怎么撤销 编辑:程序博客网 时间:2024/05/18 06:12

1、声明 ComboBox ComBoxPsMode;

 

2、绑定配送模式下拉框
 /// <summary>
        /// 绑定配送模式下拉框
        /// </summary>
        private void BindComPsMode()
        {
            dataPSModeType = eCMyModule.eCMyData.SimpleExecuteDataSet("select PSMODEID,PSMODEMC from eCWMPSModeType ORDER BY PSModeID");//ComboBox数据源

            ComBoxPsMode.Items.Clear();
            for (int i = 0; i < dataPSModeType.Tables[0].Rows.Count; i++)
            {
                ComBoxPsMode.Items.Add(dataPSModeType.Tables[0].Rows[i]["PSMODEID"].ToString().Trim() + ":" + dataPSModeType.Tables[0].Rows[i]["PSMODEMC"].ToString().Trim());
            }
        }

 

3、ComBox的项改变后赋给单元格

    private void ComBoxPsMode_SelectedIndexChanged(object sender, EventArgs e)
        {
            int k = ComBoxPsMode.SelectedIndex;
            if (k > -1)
            {
                dGVeCSpYWXX.CurrentCell.Value = ComBoxPsMode.Items[k].ToString().Trim();
            }
        }

4、点datagridview后执行

 if ((this.dGVeCSpYWXX.CurrentCell.ReadOnly == false) && (this.dGVeCSpYWXX.Columns[dGVeCSpYWXX.CurrentCell.ColumnIndex].Name.Trim() == "PSModeType"))
            {
                this.ComBoxPsMode.SelectedIndex = this.ComBoxPsMode.Items.IndexOf(dGVeCSpYWXX.Rows[dGVeCSpYWXX.CurrentCell.RowIndex].Cells["ColPsModeID"].Value.ToString().Trim() + ":" + dGVeCSpYWXX.Rows[dGVeCSpYWXX.CurrentCell.RowIndex].Cells["PSModeType"].Value.ToString().Trim());  //对combobox赋值

                 Rectangle   R = dGVeCSpYWXX.GetCellDisplayRectangle(dGVeCSpYWXX.CurrentCell.ColumnIndex, dGVeCSpYWXX.CurrentCell.RowIndex, false);  //获取单元格位置
                 ComBoxPsMode.SetBounds( R.X + dGVeCSpYWXX.Location.X-5  , R.Y + dGVeCSpYWXX.Location.Y-5 , R.Width, R.Height); //重新定位combobox.中间有坐标位置的转换                                         
                 ComBoxPsMode.Visible = true;
                 ComBoxPsMode.Focus();
            }
            else
            {
                ComBoxPsMode.Visible = false;        
            }
5、窗体构造
 public RevisionGoodsInfo()
        {
            InitializeComponent();
            ComBoxPsMode = new ComboBox();
            ComBoxPsMode.Name = "ComBoxPsMode";
            ComBoxPsMode.SelectedIndexChanged+=new EventHandler(ComBoxPsMode_SelectedIndexChanged);
            ComBoxPsMode.Visible = false;
            ComBoxPsMode.DropDownStyle = ComboBoxStyle.DropDownList;
            dGVeCSpYWXX.Controls.Add(ComBoxPsMode);
        }