我在Windows应用程序中使用TreeListView,我添加了一些数据进行查看,现在我想根据某些条件为单元格文本提供颜色,请协助我实现这一目标。
这是我尝试显示数据的示例代码。
var parent1 = new Node("PARENT1", "-", "-" );
parent1.Children.Add(new Node("CHILD_1_1", "A", "X"));
parent1.Children.Add(new Node("CHILD_1_2", "A", "Y"));
parent1.Children.Add(new Node("CHILD_1_3", "A", "Z"));
//here I need to give color for Third column value whose value is 'Y'
var parent2 = new Node("PARENT2", "-", "-" );
parent2.Children.Add(new Node("CHILD_2_1", "B", "W"));
parent2.Children.Add(new Node("CHILD_2_2", "B", "Z"));
parent2.Children.Add(new Node("CHILD_2_3", "B", "J"));
var parent3 = new Node("PARENT3", "-", "-");
parent3.Children.Add(new Node("CHILD_3_1", "C", "R"));
parent3.Children.Add(new Node("CHILD_3_2", "C", "T"));
data = new List<Node> { parent1, parent2, parent3 };
treeListView.Roots = data;
若要更改单个单元格的格式,需要将UseCellFormatEvents设置为true,然后侦听FormatCell事件。要仅以红色显示信用余额,您可以执行以下操作:
private void olv1_FormatCell(object sender, FormatCellEventArgs e) {
if (e.ColumnIndex == this.creditBalanceColumn.Index) {
Customer customer = (Customer)e.Model;
if (customer.Credit < 0)
e.SubItem.ForeColor = Color.Red;
}
}
@ Rev1.0谢谢,它对我有用,但是我使用了e.ColumnIndex == 3(硬编码)我没有得到这个'this.creditBalanceColumn.Index',因为列名是'Credit',请您澄清一下怀疑。
creditBalanceColumn
只是列名称的示例。只需使用您列的名称即可(默认情况下,应为olvColumn3之类的名称)。您可以从OLV列编辑器或设计器生成的代码部分查看和更改列名称。最好不要使用ColumnIndex,因为在以后添加或删除列时,索引可能会更改并破坏您的代码。谢谢,现在我明白了,以前我将列标题与OLV列名混淆了。