我试图在devexpress gridview中将行的颜色更改为绿色。在搜索时,我发现了许多如何做到这一点的例子......在网站上这是一个Windows应用程序。我在Windows应用程序上找不到任何东西,所以有人可以帮我一点。
我只是想将单行的颜色更改为绿色。
忘记提及,它是一个C#应用程序。
感谢您的帮助。
答案 0 :(得分:5)
要在运行时更改行颜色,请处理RowStyle事件:
public Color color1;
public Color color2;
public int rowhandle;
private void gridView1_RowStyle(object sender, DevExpress.XtraGrid.Views.Grid.RowStyleEventArgs e)
{
try
{
if (e.RowHandle == rowhandle)
{
if (color1 != null && color2 != null)
{
e.Appearance.BackColor = color1;
e.Appearance.BackColor2 = color2;
}
}
}
catch
{
}
}
private void button1_Click(object sender, EventArgs e)
{
color1 = Color.BurlyWood;
color2 = Color.DarkOrchid;
rowhandle = gridView1.FocusedRowHandle;
gridView1.RefreshRow(rowhandle);
}
下面的代码将保持颜色:
public partial class Form1 : Form
{
public Color color1;
public Color color2;
public int rowhandle;
public List<int> rowhandles;
private void gridView1_RowStyle(object sender, DevExpress.XtraGrid.Views.Grid.RowStyleEventArgs e)
{
try
{
if (rowhandles.Any(x=>x==e.RowHandle))
{
if (color1 != null && color2 != null)
{
e.Appearance.BackColor = color1;
e.Appearance.BackColor2 = color2;
}
}
}
catch
{
}
}
private void button1_Click(object sender, EventArgs e)
{
color1 = Color.BurlyWood;
color2 = Color.DarkOrchid;
rowhandle = gridView1.FocusedRowHandle;
if (!rowhandles.Any(x => x == rowhandle))
rowhandles.Add(rowhandle);
gridView1.RefreshRow(rowhandle);
}
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
Dictionary<int, string> l = new Dictionary<int, string>();
l.Add(1,"one");
l.Add(2,"two");
l.Add(3,"three");
l.Add(4, "four");
l.Add(5, "five");
l.Add(6, "six");
l.Add(7, "seven");
l.Add(8, "eight");
l.Add(9, "nine");
gridControl1.DataSource = l.ToList();
rowhandles = new List<int>();
}
}
答案 1 :(得分:0)
我建议您使用以下简单的解决方案:
using DevExpress.XtraGrid;
using DevExpress.XtraGrid.Views.Base;
//...
gridControl1.DataSource = new List<DataObj> {
new DataObj(){ ID=0, Name="A" },
new DataObj(){ ID=1, Name="B" },
new DataObj(){ ID=2, Name="C" },
new DataObj(){ ID=3, Name="D" },
};
gridView1.CustomDrawCell += gridView1_CustomDrawCell;
//...
void gridView1_CustomDrawCell(object sender, RowCellCustomDrawEventArgs e) {
if(selectedRowHandle.GetValueOrDefault(GridControl.InvalidRowHandle) == e.RowHandle) {
e.Appearance.BackColor = Color.Green;
}
}
int? selectedRowHandle;
void button1_Click(object sender, EventArgs e) {
int prevSelectedRowHandle = selectedRowHandle.GetValueOrDefault(GridControl.InvalidRowHandle);
if(prevSelectedRowHandle != GridControl.InvalidRowHandle)
gridView1.RefreshRow(prevSelectedRowHandle); // reset row-style to default
selectedRowHandle = gridView1.FocusedRowHandle;
gridView1.InvalidateRow(gridView1.FocusedRowHandle); // row painting request
}
此解决方案基于GridView.CustomDrawCell事件,当仅需要更改某些特定行外观时,该事件是首选事件。它也适用于当前选定的行,而不是GridView.RowCellStyle。