一个自定义控件,里面有datagridview. 想实现象datagridview的右键菜单"编辑列",有没有办法?

解决方案 »

  1.   

    选中DataGridView控件,在属性视图中找到Columns属性,然后点击右边的...按钮,在弹出的“编辑列”对话框中设置即可。。不能在用户控件uc的父控件上(比如form1)编辑该用户控件里的DataGridView,应当直接在uc的界面上编辑。。
      

  2.   

    如果是这样,就不用搞个用户控件了,直接按3楼的就可以了,简单d
    如果真要用,就contextMenuStrip搞定
      

  3.   

    加一个ContextMenuStrip,然后在datagridview要显示右键的某列的ContextMenuStrip属性里加入你添加的ContextMenuStrip控件即可~~
      

  4.   

    在设计状态,就能编辑列属性
    private void dataGridView_MouseUp(object sender, MouseEventArgs e)
    {
        DataGridView.HitTestInfo hitTestInfo;
        if (e.Button == MouseButtons.Right)
        {
            hitTestInfo = dataGridView.HitTest(e.X, e.Y);
            if (hitTestInfo.Type == DataGridViewHitTestType.Cell && hitTestInfo.ColumnIndex == 0)
                contextMenuForColumn1.Show(dataGridView, new Point(e.X, e.Y));
               if (hitTestInfo.Type == DataGridViewHitTestType.Cell && hitTestInfo.ColumnIndex == 1)
                contextMenuForColumn2.Show(dataGridView, new Point(e.X, e.Y));
        }
      

  5.   

    我是楼主,换一个问题吧.新建一个用户控件A,在其中包含一个datagridview, 名为B,把B设成public,并在属性编辑器里可编辑.
    在窗体上创建一个A的实例,在属性编辑器中设置B的DataSource、DataMember,这时,控件A中已可见相应的数据列。但是,在属性编辑器中,展开B,点columns的编辑按钮,会弹出一个错误信息:未将对象引用设置到对象实例。
    这个问题,是在哪里搞错了?应该怎么解决?解决这个问题就结贴。
      

  6.   

    如果是自定义控件,里面就没必要用GridView了,直接传个数据源进来,读到Table中去,要方便的多,再根据配置文件做相应的逻辑,比如:CheckAll Sort Edit等等..