在Form上有个 datagridview以及一个combobox控件,当我点击datagridview控件的某一单元格时,我想使用combobox,将这个Cell完全遮住,实现dataGridViewComboBoxColumn的效果,现在是在cell的onclick事件里头,将combobox的location 附上 当前光标的坐标值,无效,为何?

解决方案 »

  1.   

    using System;
    using System.Data;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;namespace MyNameSpace
    {
    public partial class MainForm : Form
    {
    private ComboBox cmb_Temp = new ComboBox(); private void MainForm_Load(object sender, EventArgs e)
    {
    cmb_Temp.Visible = false;
    cmb_Temp.SelectedIndexChanged += new EventHandler(cmb_Temp_SelectedIndexChanged);
    this.dgv_User.Controls.Add(cmb_Temp);
    } private void dgv_User_CurrentCellChanged(object sender, EventArgs e)
    {
    try
    {
    if (this.dgv_User.CurrentCell.ColumnIndex == 2)
    {
    Rectangle rect = dgv_User.GetCellDisplayRectangle(dgv_User.CurrentCell.ColumnIndex, dgv_User.CurrentCell.RowIndex, false);
    cmb_Temp.Left = rect.Left;
    cmb_Temp.Top = rect.Top;
    cmb_Temp.Width = rect.Width;
    cmb_Temp.Height = rect.Height;
    cmb_Temp.Visible = true;
    }
    else
    {
    cmb_Temp.Visible = false;
    }
    }
    catch
    {
    }
    } private void cmb_Temp_SelectedIndexChanged(object sender, EventArgs e)
    {
    dgv_User.CurrentCell.Value = ((ComboBox)sender).Text;
    } private void dgv_User_Scroll(object sender, ScrollEventArgs e)
    {
    this.cmb_Temp.Visible = false;
    }
    }
    }
      

  2.   

    详细实现方法去看我写的文章:
    http://blog.csdn.net/Snowdust/archive/2006/12/31/1470521.aspx