如何调用datagridview的backgroundimage属性?

问题描述

想做一个如下图所示的效果:然后在网上找到了实现的代码usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Windows.Forms;usingSystem.Drawing.Drawing2D;namespaceWindowsFormsApplication3{publicpartialclassForm1:Form{publicForm1(){InitializeComponent();this.dataGridView1.BackgroundImage=Image.FromFile("c:\2216400.jpg");this.dataGridView1.DefaultCellStyle.BackColor=Color.FromArgb(128,Color.White);this.dataGridView1.DefaultCellStyle.SelectionBackColor=Color.FromArgb(128,Color.Blue);}}publicclassMyDataGrid:DataGridView{protectedoverridevoidPaintBackground(Graphicsgraphics,RectangleclipBounds,RectanglegridBounds){graphics.DrawImageUnscaledAndClipped(this.BackgroundImage,gridBounds);}protectedoverridevoidOnCellPainting(DataGridViewCellPaintingEventArgse){if(e.RowIndex==-1||e.ColumnIndex==-1){return;}RectanglenewRect=newRectangle(e.CellBounds.X+1,e.CellBounds.Y+1,e.CellBounds.Width-4,e.CellBounds.Height-4);using(BrushgridBrush=newSolidBrush(this.GridColor),backColorBrush=newSolidBrush(e.CellStyle.BackColor),selectedColorBrush=newSolidBrush(e.CellStyle.SelectionBackColor)){using(PengridLinePen=newPen(gridBrush)){if(this.Rows[e.RowIndex].Selected){e.Graphics.FillRectangle(selectedColorBrush,e.CellBounds);}else{e.Graphics.FillRectangle(backColorBrush,e.CellBounds);}if(e.Value!=null){e.Graphics.DrawString((String)e.Value,e.CellStyle.Font,Brushes.Black,e.CellBounds.X+2,e.CellBounds.Y+2,StringFormat.GenericDefault);}}e.Handled=true;}}}}

但是最为关键的datagridview的backgroundimage属性根本就无法调用啊,这位大牛所写的this.BackgroundImage在智能输入里面根本就没有啊。强行这样写的话,就报错了。MSDN的关于DataGridView.BackgroundImage的注解在这里http://msdn.microsoft.com/zh-cn/library/system.windows.forms.datagridview.backgroundimage%28v=VS.80%29.aspx但是光说“此属性支持.NET基础结构,但不适合在代码中直接使用”又没说该怎么用啊求大侠解惑,谢谢

解决方案

解决方案二:
你是要透明吗?DataGridView1.DefaultCellStyle.BackColor=Color.Transparent
解决方案三:
不是,我是需要在datagridview里面添加背景图片
解决方案四:
引用1楼chinajiyong的回复:

你是要透明吗?DataGridView1.DefaultCellStyle.BackColor=Color.Transparent

错了,你是要设置dgv的背景图片,其实你可以换个思路来想,比如把dgv放到一个pannel里面,设置pannel的背景图片,设置dgv透明。
解决方案五:
引用3楼chinajiyong的回复:

引用1楼chinajiyong的回复:你是要透明吗?DataGridView1.DefaultCellStyle.BackColor=Color.Transparent错了,你是要设置dgv的背景图片,其实你可以换个思路来想,比如把dgv放到一个pannel里面,设置pannel的背景图片,设置dgv透明。

诶,这个思路倒是不错,值得一试,谢谢。但是重写PaintBackground这个方法没行通还是让我感觉遗憾。
解决方案六:
引用4楼shisuoking的回复:

引用3楼chinajiyong的回复:引用1楼chinajiyong的回复:你是要透明吗?DataGridView1.DefaultCellStyle.BackColor=Color.Transparent错了,你是要设置dgv的背景图片,其实你可以换个思路来想,比如把dgv放到一个pannel里面,设置pannel的背景图片,设置dgv透明。……

试了一下,结果失败了。透明倒是透明了,背景图片也能看到了,但是如果数据一多,出现下拉条的话,一拉动就杯具了,整个页面都花了
解决方案七:
自己再顶一下

时间: 2024-09-17 12:22:23

如何调用datagridview的backgroundimage属性?的相关文章

数据为空。不能对空值调用此方法或属性

问题描述 "/Web"应用程序中的服务器错误.--------------------------------------------------------------------------------数据为空.不能对空值调用此方法或属性.说明:执行当前Web请求期间,出现未处理的异常.请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息.异常详细信息:System.Data.SqlTypes.SqlNullValueException:数据为空.不能对空值调用此

为什么静态方法中不能调用非静态方法或者属性(原理)?

问题描述 2.为什么静态方法中不能调用非静态方法或者属性(原理)?在此感谢! 解决方案 解决方案二:静态方法执行时并没有类的实例解决方案三:引用1楼Icedmilk的回复: 静态方法执行时并没有类的实例

jquery-SCRIPT65535: 意外地调用了方法或属性访问

问题描述 SCRIPT65535: 意外地调用了方法或属性访问 var $dom = $(ev.currentTarget); ev.dataTransfer.setData('dragId', $dom.attr('id')); 谷歌浏览器就没有问题,,, 求大神解决 解决方案 你好!这个问题你解决了吗? 目前我也遇到了这个问题,请告诉我怎么解决的好吗

datagridview-C#Datagridview右键菜单属性

问题描述 C#Datagridview右键菜单属性 datagridview 设置不选中行的时候右键菜单就不会出现.这个要怎么做 解决方案 不要直接绑定右键菜单,而是在MouseUp中判断下,如果有选中,再弹出菜单. 解决方案二: contextXXXXX设置之后在datagirdview属性里面绑定就可以了 解决方案三: http://tieba.baidu.com/p/2021731039 这个帖子你去看看应该有你想要的

JavaScript在IE中“意外地调用了方法或属性访问”_javascript技巧

同样一段代码,两次调用,一次通过,一次异常: function clearSelect(obj){ if(obj && obj.options) obj.options.length=0; } 以下是前人的一些经验: 这是两个经典异常,不知道原理的话很难定位.从下面的代码中可用看到发生的条件 <iframe src="javascript:'<script>top.ff1={abc:function(){}}<\/script>'" wid

关于datagridview的DataPropertyName属性

问题描述 这个属性绑定的如果是属于懒加载的字段,无法显示.具体过程是:产品表中有名字这个字段publicstringNames{get;set;}publicvirtualICollection<Orders.Order>MyOrders{get;set;}//对应订单列表订单表中有产品id的字段,同时懒加载绑定了产品publicintProId{get;set;}publicvirtualProduct.ProductsMyProduct{get;set;}关系如下this.HasRequi

Java反射机制(三):调用对象的私有属性和方法

一. 通过反射调用类中的方法 在正常情况下,得到类的对象后,我们就可以直接调用类中的方法了,如果要想调用的话,则肯定必须清楚地知道要调用的方法是什么,之后通过Class类中的getMethod方法,可得到Method对象. public Method getMethod(String name, Class<?>... parameterTypes) throws NoSuchMethodException, SecurityException 当获取到Method对象后,可以通过该对象来执行

php面向对象中static静态属性和静态方法的调用

 这篇文章主要介绍了php面向对象中static静态属性和静态方法的调用,实例分析了static静态属性和静态方法的原理与调用技巧,需要的朋友可以参考下     本文实例讲述了php中static静态属性和静态方法的调用.分享给大家供大家参考.具体如下: 这里分析了php面向对象中static静态属性和静态方法的调用.关于它们的调用(能不能调用,怎么样调用),需要弄明白了他们在内存中存放位置,这样就非常容易理解了.静态属性.方法(包括静态与非静态)在内存中,只有一个位置(而非静态属性,有多少实例

c# 窗体间传值-为什么窗体中公开的属性,别的窗体不能调用??

问题描述 为什么窗体中公开的属性,别的窗体不能调用?? 以下是部分代码: private void tslSearch_Click(object sender, EventArgs e) { Form f = new Search(tn); f.Infos-- } 调用的窗体作用是设置搜索条件并返回搜索结果,部分代码如下: public partial class Search : Form { private TableName tn = TableName.企业信息; private str