list contro控件根据单元格的内容改变显示的颜色

第一首先向控件添加NM_CUSTOMDRAW消息。过程如下:

在头文件中添加:

afx_msg void OnCustomdrawMyList(NMHDR *pNMHDR, LRESULT *pResult); 为消息NM_CUSTOMDRAW的响应函数

在.CPP文件中添加

BEGIN_MESSAGE_MAP(CListControlDlg, CDialog)

//{{AFX_MSG_MAP(CListControlDlg)

ON_WM_SYSCOMMAND()

ON_WM_PAINT()

ON_WM_QUERYDRAGICON()

ON_NOTIFY ( NM_CUSTOMDRAW, IDC_LIST1, OnCustomdrawMyList ) //这句是你要添加的 其中IDC_LIST1控件的ID。

//}}AFX_MSG_MAP

END_MESSAGE_MAP()

以下为重绘函数的实现过程:

void CListControlDlg::OnCustomdrawMyList(NMHDR *pNMHDR, LRESULT *pResult)

{

//设置整行的文字的颜色

/*

LPNMLVCUSTOMDRAW pLVCD = reinterpret_cast<LPNMLVCUSTOMDRAW>(pNMHDR);

*pResult = CDRF_DODEFAULT;

// TODO: 在此添加控件通知处理程序代码

COLORREF crText;

if ( CDDS_PREPAINT == pLVCD->nmcd.dwDrawStage )

{

*pResult = CDRF_NOTIFYITEMDRAW;

}

else if ( CDDS_ITEMPREPAINT == pLVCD->nmcd.dwDrawStage )

{

*pResult = CDRF_NOTIFYSUBITEMDRAW;

}

else if (CDDS_ITEMPREPAINT == pLVCD->nmcd.dwDrawStage)

{

if ( (pLVCD->nmcd.dwItemSpec % 3) == 0)

{

crText = RGB(255,0,0);

}

else if((pLVCD->nmcd.dwItemSpec % 3) == 1)

{

crText = RGB(0,255,0);

}

else

{

crText = RGB(128,128,255);

}

pLVCD->clrText = crText;

*pResult = CDRF_DODEFAULT;

}

*/

NMLVCUSTOMDRAW* pLVCD = reinterpret_cast<NMLVCUSTOMDRAW*>(pNMHDR);

*pResult = 0;

if ( CDDS_PREPAINT == pLVCD->nmcd.dwDrawStage )

{

*pResult = CDRF_NOTIFYITEMDRAW;

}

else if ( CDDS_ITEMPREPAINT == pLVCD->nmcd.dwDrawStage )

{

*pResult = CDRF_NOTIFYSUBITEMDRAW;

}

else if ( (CDDS_ITEMPREPAINT | CDDS_SUBITEM) == pLVCD->nmcd.dwDrawStage )

{

COLORREF m_clrText;

int nItem = static_cast<int> (pLVCD->nmcd.dwItemSpec);

// 判断使ListCtrl不同颜色现实的条件

CString str = m_list.GetItemText(nItem ,2);//获取控件第二列的值,m_list为控件的变量

float m_height=(float)atof(str);

if (m_height>80&&2==pLVCD->iSubItem)

{

// 设置该列红色

m_clrText = RGB(255, 0, 0) ;

}

else

{

m_clrText = RGB(0, 0, 0) ;

}

pLVCD->clrText = m_clrText;

*pResult = CDRF_DODEFAULT;

}

}

时间: 2024-11-08 18:25:56

list contro控件根据单元格的内容改变显示的颜色的相关文章

DataGridView控件选中单元格、直接在控件中修改信息

                                                           原文取自个人博客:www.jycoder.com欢迎访问 一,获取DataGridView控件中的当前单元格 若要与DataGridView进行交互,通常要求用编程的方式发现哪个单元格出于活动状态.如果需要更改单元格,可通过DataGridView控件的CurrentCell属性来获取当前单元格的信息: 语法如下: Public DataGridViewCell CurrentC

c#winform中如何修改ListView控件每个单元格的颜色

ListView在View属性为Details的时候它呈现的方式和DataGirdView差不多,它的每一行都是一个ListViewItem,然而每个ListViewItem都有一个BackColor的属性,但是设置了这个属性却没有任何作用.因为是ListView的每一行的样式都继承的父控件的样式所以无法改变. 解决方案: ListViewItem item; item = new ListViewItem(new string[] { "NAME","" });

MFC List Control控件添加单元格编辑和单元格下拉列表项以适用于数据库相关操作

作为现代的软件,往往是连着数据库的,而连着和用户方便地操作之间,还有着界面这道坎.MFC是Windows上比较好开发用户界面的框架,然而其自带的控件中没有对于数据库表格支持较好的控件,而使用网上提到的 DataGrid 等控件在本人的win8.1+VS2013平台上老出现找不到控件或者头文件的问题,搞的烦死人.最后想到 List Control 控件只要稍作修改,加上单元格编辑和单元格下拉列表,其实就能和数据库进行良好的对接,一百度,果然有人已经做了这件事,实在是太让人感动了!       

Dev控件GridView单元格绑定控件

//文本按钮 RepositoryItemButtonEdit btnFields = new RepositoryItemButtonEdit();//创建控件 btnFields.ButtonClick += new DevExpress.XtraEditors.Controls.ButtonPressedEventHandler(btnField_ButtonClick);//事件绑定 gridView1.Columns["Fields"].ColumnEdit = btnFie

DevExpress控件 DataGrid 单元格编辑 回车

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using CYSoft.UI.Common; using CYSoft.Common; using CYSoft.TS.Entit

DataGridView中EnditCommit()调用之后,单元格的内容被全选了,每次输入都要鼠标点击定位到最后才能继续输入

因为某些需求,DataGridView在输入一次内容,就要调用ECommitEdit(DataGridViewDataErrorContexts.Commit)来将内容提交,但是这样做之后,控件就会当你输入的内容都完成了,所以将内容全选(内部的原理我还没时间去了解,所以不太清楚,希望知道的人可以告诉我) 解决方案: 为了让用户可以正常输入一串字符,在每次调用CommitEdit()方法之后,都获取控件当前单元格对应控件类型TextBox currentTextBox,调用currentTextB

poi设置一个Excel单元格的内容为多种样式的方法

有的时候我们POI操作Excel时,需要将Excel单元格的内容设置为多种样式,比如:设置单元格的内容为两种颜色,方法如下: //定义字体 HSSFFont redFont = (HSSFFont) workbook.createFont(); redFont.setColor(HSSFColor.RED.index);// 红色 HSSFFont blueFont = (HSSFFont) workbook.createFont(); redFont.setColor(HSSFColor.BL

winform中,如何控制控件位置随窗体的大小改变而改变

winform中,如何控制控件位置随窗体的大小改变而改变 有如下3种方法: 方法1 [csharp] view plaincopy using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace MarkPrint

获取table表格指定列的所有单元格的内容

获取table表格指定列的所有单元格的内容:本章节介绍一下如何获取表格指定列的所有单元格的内容,这可能在一些应用或者说扩展应用中会需要.代码实例如下: <!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <titl