如何在不使用第三方控件的情况下,美化一个项目中的所有DataGridView控件?

lzonly 2014-07-08 09:31:57
问题是这样的:
我用WinForm写了个程序,开始的时候为了省事,没有对DataGridView做任何美化,现在程序写得差不多了,需要对DataGridView统一进行美化,就是修改几个属性、设置一下颜色之类的操作。
有没有什么办法可以重载DataGridView的某个方法,使得这个程序中的所有DataGridView都发生变化?
...全文
1353 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
BrightFireOfCy 2014-07-10
  • 打赏
  • 举报
回复
你的画面又没有自己的基类? 有基类的话在基类的formload里面去找本页面存在的dgv,然后改 没有基类的话写个方法,把这个方法注册进所有的form的load事件
jiaoya_2638125250 2014-07-10
  • 打赏
  • 举报
回复
设置DataGrudVuew中字体的样式 //绑定显示数据 private void Frm_Main_Load(object sender, EventArgs e) { dgv_Message.DataSource = new List<Student>() {//绑定到数据集合 new Student(){Name="小明",Age=30}, new Student(){Name="老张",Age=40}, new Student(){Name="文明",Age=33}, new Student(){Name="大海",Age=31}}; dgv_Message.Columns[0].Width = 200;//设置列宽 dgv_Message.Columns[1].Width = 170;//设置列宽 dgv_Message.DefaultCellStyle.Font = //设置网格中字体样式 new Font("隶书",15); } //使用代码编辑器修改此方法的内容。 private void InitializeComponent() { this.dgv_Message = new System.Windows.Forms.DataGridView(); ((System.ComponentModel.ISupportInitialize)(this.dgv_Message)).BeginInit(); this.SuspendLayout(); // // dgv_Message // this.dgv_Message.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; this.dgv_Message.Dock = System.Windows.Forms.DockStyle.Fill; this.dgv_Message.Location = new System.Drawing.Point(0, 0); this.dgv_Message.Name = "dgv_Message"; this.dgv_Message.RowTemplate.Height = 23; this.dgv_Message.Size = new System.Drawing.Size(438, 148); this.dgv_Message.TabIndex = 0; // // Frm_Main // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(438, 148); this.Controls.Add(this.dgv_Message); this.Name = "Frm_Main"; this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; this.Text = "设置DataGridView控件中字体的样式"; this.Load += new System.EventHandler(this.Frm_Main_Load); ((System.ComponentModel.ISupportInitialize)(this.dgv_Message)).EndInit(); this.ResumeLayout(false); }
PaulyJiang 2014-07-09
  • 打赏
  • 举报
回复
写个公用的方法去设置你要的属性,然后把每个实例GDV传进去就ok了
tinydyw 2014-07-09
  • 打赏
  • 举报
回复
可以试试在datagridview外层form的controladded事件里判断控件是否是datagridview 如果是,就改变它的属性..不过这种其实也就是对form的继承....和继承datagridview大同小异....
lzonly 2014-07-09
  • 打赏
  • 举报
回复
引用 4 楼 caozhy 的回复:
从DataGridView继承一个类,然后查找替换将所有的控件替换成对它的使用。
好吧,目前就用的这种办法了。
lzonly 2014-07-09
  • 打赏
  • 举报
回复
由于datagridview有两个事件需要重载,所以最后还是自定义了一个dgv。
threenewbee 2014-07-08
  • 打赏
  • 举报
回复
从DataGridView继承一个类,然后查找替换将所有的控件替换成对它的使用。
tcmakebest 2014-07-08
  • 打赏
  • 举报
回复
所有用到datagridview的FORM都需要修改是肯定的,唯一能做的就是如何使代码最少,答案就是将设置这些属性的代码写成一个静态方法,然后在需要的地方写一行调用语句.
lzonly 2014-07-08
  • 打赏
  • 举报
回复
引用 1 楼 sjrw96004 的回复:
可以写个类,对DGV进行二次封装
我按照这种方法试了一下:http://www.cnblogs.com/sufei/archive/2010/05/12/1734028.html 但是DGV没有发生变化,在OnCreateControl里下断点也不会中断,不知道是什么原因。
sjrw96004 2014-07-08
  • 打赏
  • 举报
回复
可以写个类,对DGV进行二次封装

110,571

社区成员

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

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

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