描述如下:
vs2005,winform程序,我定义了一个基窗体,里面有datagridview控件,为了保持界面风格一致,和共享一些功能。
遇到问题如下:在子窗体中datagridview控件不可设计,Modifiers修改为protected没有起作用。查了下相关的资料,说像datagridview这样的大型控件,继承后不能修改。
那位高手知道怎么让datagridview在继承窗体里可以设计,比如调整大小等,或者变通的方法。
谢谢,在线等。

解决方案 »

  1.   

    将基窗体的datagridview设为protected,继承窗体就可以设置大小了
      

  2.   

        
    public class MyDataGridView : DataGridView
        {
        }这样行吗
      

  3.   

    你是不是在基窗体用了tableLayoutPanel之类的容器控件,,用了这个肯定不行
      

  4.   

    你是自己做了个用户控件,里面包含表格简单的话,可以在你的控件上封装两个属性,就是表格的宽和高,里面的代码就是读取与设置表格的宽和高。
    这个做法是不支持在IDE中用鼠标拖拽表格的。
    你要是想完全控制表格控件,就是像4楼那样,自己直接写一个继承与DataGridView的控件
      

  5.   


    我是基窗体定义了datagridview控件,一个是保持界面风格统一,一个是有些功能要共享。如单元格选中事件等。
    你说的自定义控件完成不了我想要的,谢谢你。
      

  6.   

    datagridview 这东东是比较变态,好像就是不行。
      

  7.   


    我不是做了用户控件,我是定义了一个基窗体。里面包含datagridview控件,还包括查询按钮等信息。
    我的其他窗体是继承这个基窗体的。
      

  8.   


    红星星高手,救命啊,我应该怎么弄,才能在继承的窗体里可设计修改datagridview
      

  9.   

    和tableLayoutPanel无关,随便加一个DataGridView,然后继承窗体也不能编辑DataGridView
      

  10.   

    public partial class FrmBaseForm : Form
        {
            public FrmBaseForm()
            {
                InitializeComponent();
            }
            /// <summary>
            /// 定义基窗体的虚方法,继承的子窗体可以重写该方法,实现各子窗体的具体查询功能
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            public virtual void cmdSearch_Click(object sender, EventArgs e)
            {
                
            }
            /// <summary>
            /// 定义基数据网格的虚方法,继承的子数据网格可以重写该方法,实现各子数据网格的取消默认选择行
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            public virtual void dgvBase_Enter(object sender, EventArgs e)
            {
                if (dgvBase.Rows.Count > 0)
                {
                    dgvBase.Rows[0].Selected = false;
                }
            }
            /// <summary>
            /// 定义基数据网格的虚方法,继承的子数据网格可以重写该方法,实现各子数据网格的单元格选中事件
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            public virtual void dgvBase_CellClick(object sender, DataGridViewCellEventArgs e)
            {        }
            /// <summary>
            /// 定义基文本框的虚方法,继承的子文本框可以重写该方法,实现各子文本框的keydown事件
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            public virtual void txtSearch_KeyDown(object sender, KeyEventArgs e)
            {
                if (e.KeyCode == Keys.Enter)
                {
                    cmdSearch_Click(sender, e);
                }
            }       
        }