Изменить цвет текста в EditorRow
Я могу изменить цвет для всех записей в VGridControl.
vGridControl1.Appearance.ReadOnlyRecordValue.ForeColor
Но я не знаю, как изменить цвет только для одного ряда.
EditorRow row = new EditorRow(id);
row.Name = "row" + id;
row.Properties.Row.Appearance.ForeColor = ColorText;
row.Properties.Row.Appearance.Options.UseForeColor = true;
Я пытаюсь сделать что-то. Но это не работает. Помоги мне, пожалуйста.
Хорошо, если я использую событие CustomDrawRowHeaderCell, я могу изменить цвет заголовка. Код:
private void vGridControl1_CustomDrawRowHeaderCell(object sender, DevExpress.XtraVerticalGrid.Events.CustomDrawRowHeaderCellEventArgs e)
{
try {
System.Drawing.Color ColorText = Color.FromArgb(m_Color.r, m_Color.g, m_Color.b);
e.Row.Appearance.ForeColor = ColorText;
}
catch (Exception ex)
{ }
}
Но, когда я пытаюсь изменить цвет строки текста, у меня возникает проблема: я не могу изменить цвет строки текста. Но я могу изменить строку BackColor. Может кто-нибудь мне помочь? Код:
private void vGridControl1_CustomDrawRowValueCell(object sender, DevExpress.XtraVerticalGrid.Events.CustomDrawRowValueCellEventArgs e)
{
try
{
System.Drawing.Color ColorText = Color.FromArgb(m_Color.r, m_Color.g, m_Color.b);
e.Row.Appearance.ForeColor = ColorText;
e.Row.Appearance.Options.UseForeColor = true;
e.Row.Appearance.BackColor = ColorText;
}
catch (Exception ex)
{ }
}
2 ответа
Я хотел бы предложить вам проверить документацию DevExpress на gridview.
если вам нужна строка для изменения цвета, вы можете сделать это так:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
gridControl1.DataSource = new List<Structure>
{
new Structure {Id = 1, Val1 = "nr 1"},
new Structure {Id = 2, Val1 = "nr 2"},
new Structure {Id = 3, Val1 = "nr 3"}
};
}
private void gridView1_RowStyle(object sender, DevExpress.XtraGrid.Views.Grid.RowStyleEventArgs e)
{
int myExpectedRowHandle = 1;
if (e.RowHandle == myExpectedRowHandle)
{
e.Appearance.BackColor = Color.Crimson;
}
}
}
public class Structure
{
public string Val1 { get; set; }
public int Id { get; set; }
}
Вы справляетесь с RowStyle
Событие для этой патетической работы. Результат будет выглядеть примерно так:
РЕДАКТИРОВАТЬ
Чтобы установить цвет только одной ячейки - обработайте событие RowCellStyle
В моем примере вы бы выглядели так:
private void gridView1_RowCellStyle(object sender, RowCellStyleEventArgs e)
{
int myExpectedRowHandle = 1;
if (e.Column != colVal1 || e.RowHandle != myExpectedRowHandle)
return;
e.Appearance.ForeColor = Color.Crimson;
}
Здесь я вставляю строку в VGridControl. Могу ли я изменить цвет текста в этой функции?
enter code here
private void InsertNewRow(string id, string text, int type)
{
EditorRow row = new EditorRow(id);
row.Name = "row" + id;
row.Properties.ImageIndex = type;
//vGridControl1.Appearance.ReadOnlyRecordValue.ForeColor = ColorText;
M_Objects myColorObject = new M_Objects();
if (GetObjectById(id, ref myColorObject) >= 0)
{
m_Color = myColorObject.Color;
}
System.Drawing.Color ColorText = Color.FromArgb(m_Color.r, m_Color.g, m_Color.b);
row.Appearance.ForeColor = ColorText;//here I try to change color
row.Appearance.Options.UseForeColor = true;//It does not work
if (vGridControl1.RepositoryItems.Count == 0)
vGridControl1.RepositoryItems.Add("TextEdit");
row.Properties.RowEdit = vGridControl1.RepositoryItems[0];
row.Properties.Value = text;
row.Height = 28;
row.Properties.ReadOnly = true;
vGridControl1.Rows["MainRow"].ChildRows.Add(row);//I don't write this code. Is it right?
}