Hello,
I would like to ask two questions about custom columns in GridView. I'm putting them into one thread since they're related.
1. What's the relationship between SetContentCore and OnCellFormatting? Is it ok to set formatting in SetContentCore? This is how it seems to me to be correct:
protected override void SetContentCore(object value)
{
if (value is Quality q)
{
if (q == Quality.None)
Text = "--";
else
Text = q.ToString();
}
else
base.SetContentCore(value);
}
protected override void OnCellFormatting(CellFormattingEventArgs e)
{
ResetValue(VisualElement.BackColorProperty, ValueResetFlags.Local);
ResetValue(VisualElement.ForeColorProperty, ValueResetFlags.Local);
ResetValue(LightVisualElement.NumberOfColorsProperty, ValueResetFlags.Local);
ResetValue(LightVisualElement.DrawFillProperty, ValueResetFlags.Local);
if (Value is Quality q)
{
switch (q)
{
case Quality.OK:
BackColor = Color.Lime;
NumberOfColors = 1;
DrawFill = true;
break;
case Quality.NOK:
BackColor = Color.Red;
NumberOfColors = 1;
DrawFill = true;
break;
case Quality.Error:
BackColor = Color.DodgerBlue;
NumberOfColors = 1;
DrawFill = true;
break;
}
}
base.OnCellFormatting(e);
}But this also works. I tried it mainly because of the second question, and Copilot actually suggested it as the first styling approach.
protected override void SetContentCore(object value)
{
if (value is Quality q)
{
if (q == Quality.None)
Text = "--";
else
Text = q.ToString();
ResetValue(VisualElement.BackColorProperty, ValueResetFlags.Local);
ResetValue(VisualElement.ForeColorProperty, ValueResetFlags.Local);
ResetValue(LightVisualElement.NumberOfColorsProperty, ValueResetFlags.Local);
ResetValue(LightVisualElement.DrawFillProperty, ValueResetFlags.Local);
switch (q)
{
case Quality.OK:
BackColor = Color.Lime;
NumberOfColors = 1;
DrawFill = true;
break;
case Quality.NOK:
BackColor = Color.Red;
NumberOfColors = 1;
DrawFill = true;
break;
case Quality.Error:
BackColor = Color.DodgerBlue;
NumberOfColors = 1;
DrawFill = true;
break;
}
}
else
base.SetContentCore(value);
}
2. Is there any way to override how Value is retrieved from the DataBoundItem? In one of my column types, I can't use FieldName directly. In classic DataGridView, I could override GetValue / SetValue like this:
protected override object GetValue(int rowIndex)
{
DgvRealResultColumn col = OwningColumn as DgvRealResultColumn;
object obj = DataGridView.Rows[rowIndex].DataBoundItem;
if ((col == null) || (obj == null))
return base.GetValue(rowIndex);
object resultValue = GetResultValue(rowIndex, col, obj);
Quality q = (Quality)Convert.ToInt32(resultValue);
if (!QualityHelper.HasValue(q))
return null;
if (obj is RealResult rr)
return rr.Value;
string propName = string.Format("R{0:D3}Value", col.ItemIndex);
PropertyInfo pi = obj.GetType().GetProperty(propName);
return pi.GetValue(obj, null);
}
I don't see anything like that in Telerik GridView. So far, I came up with this workaround:
protected override void SetContentCore(object value)
{
TestResult r = null;
var obj = RowInfo.DataBoundItem;
if (obj is TestResult)
r = (TestResult)obj;
else if (obj is TestItem item)
{
var col = ColumnInfo as RgvTestResultColumn;
if ((col != null) && (item.Results != null) && (col.ResultIndex < item.Results.Length))
r = item.Results[col.ResultIndex];
}
ResetValue(VisualElement.BackColorProperty, ValueResetFlags.Local);
ResetValue(VisualElement.ForeColorProperty, ValueResetFlags.Local);
ResetValue(LightVisualElement.NumberOfColorsProperty, ValueResetFlags.Local);
ResetValue(LightVisualElement.DrawFillProperty, ValueResetFlags.Local);
if (r == null)
{
base.SetContentCore(value);
return;
}
switch (r.Result)
{
case Quality.OK:
Text = r.Value.ToString("F1");
BackColor = Color.Lime;
NumberOfColors = 1;
DrawFill = true;
break;
case Quality.NOK:
Text = r.Value.ToString("F1");
BackColor = Color.Red;
NumberOfColors = 1;
DrawFill = true;
break;
case Quality.Error:
Text = "X";
BackColor = Color.DodgerBlue;
NumberOfColors = 1;
DrawFill = true;
break;
default:
Text = "--";
break;
}
}But in this case, it doesn't set the internal Value, so when I write rgv.Rows[0].Cells["colR0"].Value in code, I always get null. Is there any way to solve this? I am attaching my test code for testing.

i want to custimize RadMessageBox
example : set the TitleBar.Font BackColor
set radLabel1 font and backcolor
set button 's font and button's szie ....

RadMenuItem's TEXT shown too small ? how can i fix it ?
Since ShapedForm inherits from Form, it may be difficult to apply it to existing RadForm forms.

Hello,
I’m working with some older forms that use System.Windows.Forms.DataGridView. The form is quite complex, so converting it to Telerik isn’t straightforward.
I’d like to copy a row from RadPageView. Could you please provide a sample code snippet showing how to achieve this?
Thank you!
Radek
Hi All,
I searched on internet for the solution but didn't find any solution. I am using RadTreeView control, when I move mouse over treeview, nodes get highlighted. I used following ways but no luck.
private void radTreeList_NodeMouseMove(object sender, RadTreeViewMouseEventArgs e)
{
e.Node.BackColor = Color.Transparent; // Remove hover background
}
private void radTreeList_NodeFormatting(object sender, TreeNodeFormattingEventArgs e)
{
e.NodeElement.BackColor = Color.Transparent; // Remove hover background
e.NodeElement.DrawFill = false; // Disable fill
if (e.Node.Selected)
{
e.Node.BackColor = Color.Blue; // Default background
e.Node.ForeColor = Color.White; // Default text color
}
else
{
e.NodeElement.ContentElement.ResetValue(LightVisualElement.BackColorProperty, ValueResetFlags.Local);
e.NodeElement.ContentElement.ResetValue(LightVisualElement.ForeColorProperty, ValueResetFlags.Local);
}
}
Kindly provide me solution, stuck on this for a long time.
Thanks

Hi All,
I have implemented the Telerik window tree view control in my project, in output when I move mouse over nodes, get highlighted. I need to remove that one.
I tried the following ways but no luck.
private void radTreeList_NodeMouseMove(object sender, RadTreeViewMouseEventArgs e)
{
e.Node.BackColor = Color.Transparent; // Remove hover background
}
private void radTreeList_NodeFormatting(object sender, TreeNodeFormattingEventArgs e)
{
e.NodeElement.BackColor = Color.Transparent; // Remove hover background
e.NodeElement.DrawFill = false; // Disable fill
if (e.Node.Selected)
{
e.Node.BackColor = Color.Blue; // Default background
e.Node.ForeColor = Color.White; // Default text color
}
else
{
e.NodeElement.ContentElement.ResetValue(LightVisualElement.BackColorProperty, ValueResetFlags.Local);
e.NodeElement.ContentElement.ResetValue(LightVisualElement.ForeColorProperty, ValueResetFlags.Local);
}
}
Please provide me a solution to get rid off this problem.
Thanks,
Ravinder Singh

i add some "CommandBarButton"s into RadCommandBar
i need image like "Add/Edit/Cancel/Delete"
Do Telerik provide images for use ?
Do i need png or SVG File ?
CHATGPT tell me there is "Telerik.WinControls.UI.RadImageList"
but i can not find it
Hello,
I have a question about the behavior of the Text property in the CellFormatting event in GridView. I understand that GridView uses UI virtualization, and that I need to reset all modified properties for the rest of cells. But how does the Text property behave? I looked through the forum and found this example:
private void radGridView1_CellFormatting(object sender, CellFormattingEventArgs e)
{
if (e.Column.Name == "Description")
{
e.CellElement.Text = e.CellElement.Value + " END";
e.CellElement.Image = Properties.Resources.OutlookViewCalendar;
e.CellElement.DrawImage = true;
e.CellElement.TextImageRelation = TextImageRelation.TextBeforeImage;
}
else
{
e.CellElement.ResetValue(LightVisualElement.ImageProperty, ValueResetFlags.Local);
e.CellElement.ResetValue(LightVisualElement.DrawImageProperty, ValueResetFlags.Local);
e.CellElement.ResetValue(LightVisualElement.TextImageRelationProperty, ValueResetFlags.Local);
}
}
In this example, all properties are reset except Text. When I tried to reset Text, all cell texts disappeared, except the ones I set manually in CellFormatting. So I think Text has special behavior in CellFormatting, and it's always set from Value at the beginning and it's not affected by UI virtualization and reusing cells. Is that correct?
Also, just to be sure, in all examples I saw the if/else pattern. But functionally, is it the same as if I reset all properties I want to change at the beginning, and then set them later? Or can this have some performance impact? The reason I ask is that I use a switch with more branches, and it would be hard to track what needs to be reset in each one.
Here is my case. And I was also thinking, in my case, is it correct to reset the properties before checking ColumnIndex and RowIndex, or after?
private void rgv_CellFormatting(object sender, CellFormattingEventArgs e)
{
e.CellElement.ResetValue(LightVisualElement.BackColorProperty, ValueResetFlags.Local);
e.CellElement.ResetValue(LightVisualElement.NumberOfColorsProperty, ValueResetFlags.Local);
e.CellElement.ResetValue(LightVisualElement.DrawFillProperty, ValueResetFlags.Local);
e.CellElement.ResetValue(LightVisualElement.PaddingProperty, ValueResetFlags.Local);
//e.CellElement.ResetValue(LightVisualElement.TextProperty, ValueResetFlags.Local);
if ((e.ColumnIndex < 0) || (e.RowIndex < 0))
return;
var ed = e.Row.DataBoundItem as TestParEditorItem;
if (ed == null)
return;
bool isSub = ed.IsSubItem;
bool hasSub = ed.HasSubItems;
switch (e.Column.Name)
{
case "colR":
case "colFi":
case "colR2":
case "colFi2":
if (isSub)
e.CellElement.Text = "";
break;
case "colMin":
case "colMax":
if (hasSub)
e.CellElement.Text = "";
break;
case "colAct":
e.CellElement.BackColor = SystemColors.ControlLight;
e.CellElement.NumberOfColors = 1;
e.CellElement.DrawFill = true;
break;
case "colType":
if (isSub)
{
e.CellElement.Text = ed.SubItemName;
e.CellElement.Padding = new Padding(30, 0, 0, 0);
}
else
{
e.CellElement.Padding = new Padding(0, 0, 0, 0);
}
break;
}
}Thanks.

i use VS2022 .net8
i create a new project to try RadTreeView
ptoject file as attached
but
1. The Text of Form shown on the VS2022 IDE is so small
2. At Run Time i can not see anything in the RadTreeView
can anyone help me
thanks a lot