本帖最后由 Gateman 于 2010-01-12 22:43:09 编辑

解决方案 »

  1.   

    可以自己写DataGridView或自己写Form,都可以解决部分问题。不自己重载Form的OnControlAdded,在ControlAdded事件里加段程序也应该差不多,判断加入的Control,
    如果是DataGridView,绑定方法,如果是子容器,把他的ControlAdded事件也加上委托。
    (没有试验,凭想象写的,不一定对)
      

  2.   

    重写Datagridview父类,子类继承
      

  3.   

    很简单 你自己把自己绕进去了
    创建一个Form 拖一个DataGridView 写好你需要的5个事件 保存
    在你需要 重用DataGridView的时候 直接继承这个Form
      

  4.   

    看了下另外两个帖子,估计是这个意思,LZ试试行不行!    class MyGrid : DataGridView
        {
            protected override void OnMouseClick(MouseEventArgs e)
            {
                base.OnMouseClick(e);
                DataGridView.HitTestInfo rows = HitTest(e.X, e.Y);
                if (e.Button == MouseButtons.Left)
                {
                    if (rows.RowIndex > -1)
                    {
                        ClearSelection();
                        //GV.DefaultCellStyle.BackColor = Color.BlanchedAlmond;
                        CurrentRow.Selected = true;
                        Rows[rows.RowIndex].Selected = true;
                    }
                    else
                    {
                    }
                }
            }
        }
      

  5.   

    看了各位的帖子,目前不能解决问题.
    本人也是写程序中遇到了这个棘手的问题,以前总是类似问题写Usercontrol就能解决,这次碰到问题确实技穷了,如果哪位达人遇到过类似问题,请实测后贴出代码供大家共同学习,以便共同探讨。
      

  6.   

    另一种方法!    public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }        protected override void OnControlAdded(ControlEventArgs e)
            {
                base.OnControlAdded(e);            if (e.Control is DataGridView)
                {
                    DataGridView grid = e.Control as DataGridView;
                    grid.MouseClick += this.DataGridView_MouseClick;
                }
             }        protected void DataGridView_MouseClick(object sender, MouseEventArgs e)
            {
                DataGridView grid = sender as DataGridView;
                MessageBox.Show("Test");
            }
        }