| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2131 人关注过本帖
标题:winfrom中datagridview显示数据库内容,将其中的关键字描红显示
只看楼主 加入收藏
tiejiang509
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2012-2-28
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:14 
winfrom中datagridview显示数据库内容,将其中的关键字描红显示
我用vs里的datagridview显示数据的查询内容,内容以表格的形式显示在datagridview中,想把第二列中的关键字描红。只描红关键字,其他的字颜色不变。哪位大仙帮忙解决一下,找了好几天了,都没有找到解决方法。我刚注册就20分,全部给了
搜索更多相关主题的帖子: 关键字 数据库 
2012-02-28 15:48
xydddaxia
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:33
帖 子:466
专家分:2307
注 册:2009-3-20
收藏
得分:20 
程序代码:
//重绘单元格
    public class MyDataGridView : DataGridView
    {
        public MyDataGridView()
        {

        }

        private string keyWord;
        private Color keyColor = Color.Red;
        public string KeyWord
        {
            get { return keyWord; }
            set { keyWord = value; }
        }
        public Color KeyColor
        {
            get { return keyColor; }
            set { keyColor = value; }
        }

        protected override void OnCellPainting(DataGridViewCellPaintingEventArgs e)
        {
            base.OnCellPainting(e);
            if (e.Value != null && !string.IsNullOrEmpty(keyWord) && e.Value.ToString().Contains(keyWord))
            {
                string cellValue = e.Value.ToString();

                Rectangle cellRect = e.CellBounds;
                Rectangle keyRect = e.CellBounds;
                float fontSizeWidth = 96 / (72 / e.CellStyle.Font.Size);
                float fontSizeHeight = 96 / (72 / e.CellStyle.Font.Size);
                keyRect.X += cellValue.Substring(0, cellValue.IndexOf(keyWord)).Length * (int)fontSizeWidth;
                keyRect.Y += (e.CellBounds.Height - (int)fontSizeHeight) / 2;
                cellRect.Y = keyRect.Y;

                Brush foreBrush = new SolidBrush(e.CellStyle.ForeColor);
                Brush keyBrush = new SolidBrush(this.keyColor);

                e.PaintBackground(e.ClipBounds,false);
                if (e.State == (DataGridViewElementStates.Displayed | DataGridViewElementStates.Selected | DataGridViewElementStates.Visible))
                {
                    e.PaintBackground(e.ClipBounds, true);
                }
                e.Graphics.DrawString(cellValue, this.Font, foreBrush, cellRect, StringFormat.GenericDefault);
                e.Graphics.DrawString(keyWord, this.Font, keyBrush,keyRect,StringFormat.GenericDefault);
                e.Handled = true;
            }
        }
    }


//设置样式dataGridView1 为MyDataGridView类型
            this.dataGridView1.KeyColor = Color.Red;
            this.dataGridView1.KeyWord = "工程";



图片附件: 游客没有浏览图片的权限,请 登录注册





站在春哥的肩膀上
2012-02-29 10:26
tiejiang509
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2012-2-28
收藏
得分:0 
回复 2楼 xydddaxia
真是高手啊,我刚学C#,麻烦你能详细说一下吗?就是该怎么一步步的做呢,界面需要放个datagridview控件,然后怎么做呢。重绘单元格的方法要放到什么地方呢?麻烦解释一下,非常感谢你。
2012-02-29 14:50
xydddaxia
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:33
帖 子:466
专家分:2307
注 册:2009-3-20
收藏
得分:0 
新建一个pulic 类 MyDataGridView 继承 DataGridView,新建的这个类会生成一个控件,生成后可以在工具箱找到,和原来的DataGridView一模一样,只是重写里面的OnCellPainting方法,并且添加了2个字段和属性

站在春哥的肩膀上
2012-02-29 15:19
tiejiang509
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2012-2-28
收藏
得分:0 
回复 4楼 xydddaxia
我还是看不懂,感觉有点深。您能抽点时间将详细步骤写一下吗?我急需这个方法。如建一个什么样的程序,添加一个什么样类型的文件,再在这个文件中怎么做,知道我用来显示数据内容的datagridview要怎么和重绘的单元格关联。在你有时间的情况下,麻烦给谢谢,非常感谢。
2012-02-29 15:46
tiejiang509
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2012-2-28
收藏
得分:0 
回复 4楼 xydddaxia
我QQ 710793123。您能加我吗,我是一个初学者
2012-02-29 16:16
zjdjh
Rank: 1
等 级:新手上路
帖 子:63
专家分:0
注 册:2005-12-22
收藏
得分:0 
以下是引用xydddaxia在2012-2-29 15:19:47的发言:

新建一个pulic 类 MyDataGridView 继承 DataGridView,新建的这个类会生成一个控件,生成后可以在工具箱找到,和原来的DataGridView一模一样,只是重写里面的OnCellPainting方法,并且添加了2个字段和属性
认真学习!!!
版主说的比书上说的好懂!!!!!
2012-03-02 21:27
hlm750908
Rank: 1
等 级:新手上路
威 望:2
帖 子:8
专家分:0
注 册:2007-11-15
收藏
得分:0 
这个超强
2014-06-20 00:55
幽你一默
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2014-7-1
收藏
得分:0 
请问怎么设置样式dataGridView1 为MyDataGridView类型呢?
2014-07-01 08:21
幽你一默
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2014-7-1
收藏
得分:0 
我懂了  谢谢   果然大牛!
2014-07-01 08:27
快速回复:winfrom中datagridview显示数据库内容,将其中的关键字描红显示
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022168 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved