一个没解决的问题:关于继承的datagridview控件,高手进来看看

abcyzq 2008-09-17 11:18:52
描述如下:
vs2005,winform程序,我定义了一个基窗体,里面有datagridview控件,为了保持界面风格一致,和共享一些功能。
遇到问题如下:在子窗体中datagridview控件不可设计,Modifiers修改为protected没有起作用。查了下相关的资料,说像datagridview这样的大型控件,继承后不能修改。
那位高手知道怎么让datagridview在继承窗体里可以设计,比如调整大小等,或者变通的方法。
谢谢,在线等。
...全文
285 19 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
twobug 2008-09-17
  • 打赏
  • 举报
回复
不管是基窗口还是控件,你只要封装好表格高和表格宽属性,就是可以在属性窗口调整表格的尺寸呀
abcyzq 2008-09-17
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 ZengHD 的回复:]
和tableLayoutPanel无关,随便加一个DataGridView,然后继承窗体也不能编辑DataGridView
[/Quote]

我想让它继承窗体可以编辑,比如改变大小什么的。
abcyzq 2008-09-17
  • 打赏
  • 举报
回复
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);
}
}


}
ZengHD 2008-09-17
  • 打赏
  • 举报
回复
和tableLayoutPanel无关,随便加一个DataGridView,然后继承窗体也不能编辑DataGridView
ZengHD 2008-09-17
  • 打赏
  • 举报
回复
把你的基类的代码贴出来看看啊
abcyzq 2008-09-17
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 ZengHD 的回复:]
哦,基类窗体啊,我搞错了
[/Quote]

红星星高手,救命啊,我应该怎么弄,才能在继承的窗体里可设计修改datagridview
ZengHD 2008-09-17
  • 打赏
  • 举报
回复
哦,基类窗体啊,我搞错了

abcyzq 2008-09-17
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 twobug 的回复:]
你是自己做了个用户控件,里面包含表格

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

我不是做了用户控件,我是定义了一个基窗体。里面包含datagridview控件,还包括查询按钮等信息。
我的其他窗体是继承这个基窗体的。
gh_li 2008-09-17
  • 打赏
  • 举报
回复
datagridview 这东东是比较变态,好像就是不行。
abcyzq 2008-09-17
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 ZengHD 的回复:]
C# code
public class MyDataGridView : DataGridView
{
}

这样行吗
[/Quote]

我是基窗体定义了datagridview控件,一个是保持界面风格统一,一个是有些功能要共享。如单元格选中事件等。
你说的自定义控件完成不了我想要的,谢谢你。
twobug 2008-09-17
  • 打赏
  • 举报
回复
你是自己做了个用户控件,里面包含表格

简单的话,可以在你的控件上封装两个属性,就是表格的宽和高,里面的代码就是读取与设置表格的宽和高。
这个做法是不支持在IDE中用鼠标拖拽表格的。
你要是想完全控制表格控件,就是像4楼那样,自己直接写一个继承与DataGridView的控件
abcyzq 2008-09-17
  • 打赏
  • 举报
回复
的确用了容器控件,美观一下,
enaking 2008-09-17
  • 打赏
  • 举报
回复
你是不是在基窗体用了tableLayoutPanel之类的容器控件,,用了这个肯定不行
ZengHD 2008-09-17
  • 打赏
  • 举报
回复
    
public class MyDataGridView : DataGridView
{
}

这样行吗

try530 2008-09-17
  • 打赏
  • 举报
回复
重绘
wangfeng8317 2008-09-17
  • 打赏
  • 举报
回复
将基窗体的datagridview设为protected,继承窗体就可以设置大小了
abcyzq 2008-09-17
  • 打赏
  • 举报
回复
自己先顶一个,大家帮帮忙啊
lee118 2008-09-17
  • 打赏
  • 举报
回复
不能在设计时用属性栏修改,微软限制了。想修改的话,在代码里写吧
ZengHD 2008-09-17
  • 打赏
  • 举报
回复
微软做了限制

111,093

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧