When typing text in a new row in the RadGridView control with Windows 11 theme, the text appears to be moved down from the top of the row and makes it look like it is hidden, thus making it hard to see.
I am using all the defaults of the RadGridView control with AutoSizeRows = true.
Please refer to the attached sample video.
StackTrace:
Message: Object reference not set to an instance of an object. Telerik.WinControls.UI.RadGridViewDragDropService.GetDragImageHint(ContentAlignment textAlignment, Bitmap hintImage, RectangleF textRectangle, Int32 hintImageWidth) Telerik.WinControls.UI.ColumnChooserItem.GetDragHintCore() Telerik.WinControls.RadItem.Telerik.WinControls.ISupportDrag.GetDragHint() Telerik.WinControls.RadDragDropService.PrepareContext():80 Telerik.WinControls.RadDragDropService.HandleMouseMove(Point mousePos):40 Telerik.WinControls.UI.RadGridViewDragDropService.HandleMouseMove(Point mousePosition):13 Telerik.WinControls.RadDragDropService.Telerik.WinControls.IMessageListener.PreviewMessage(Message& msg):150 Telerik.WinControls.RadMessageFilter.NotifyGetMessageEvent(Message& msg):41 Telerik.WinControls.RadMessageFilter.GetMessageHookProc(Int32 code, IntPtr wParam, IntPtr lParam):36
Code snippet for reproducing the error:
DataTable dt = new DataTable();
dt.Columns.Add("Id", typeof(int));
dt.Columns.Add("Title", typeof(string));
dt.Columns.Add("Price", typeof(decimal));
for (int i = 0; i < 10; i++)
{
dt.Rows.Add(i, "Row" + i, 0);
}
this.radGridView1.DataSource = dt;
this.radGridView1.AutoSizeColumnsMode = GridViewAutoSizeColumnsMode.Fill;
GridViewSummaryItem summaryItem = new GridViewSummaryItem();
summaryItem.Name = "Price";
summaryItem.Aggregate = GridAggregateFunction.StDev;
GridViewSummaryRowItem summaryRowItem = new GridViewSummaryRowItem();
summaryRowItem.Add(summaryItem);
this.radGridView1.SummaryRowsBottom.Add(summaryRowItem);
With the current implementation, you can drop a column from the ColumnChooser window into the row. The column will be added to a place that reflects its position in the RadGridView Columns collection.
Code to replicate the issue:
GridPrintStyle style = new GridPrintStyle();
style.PrintHierarchy = true;
style.HierarchyIndent = 0;
style.ChildViewPrintMode = ChildViewPrintMode.SelectViewToPrint;
this.radGridView1.PrintStyle = style;
this.radGridView1.PrintPreview();
The attached gif file illustrates how the 20px hierarchy indent is returned after hitting the preview button.
The following article shows how to attach the source code to your project:
https://docs.telerik.com/devtools/winforms/knowledge-base/attach-telerik-source-code-to-your-project
When attaching the .NETCore projects (latest version R1 2023) to your application, the project can't be built.
By default, in the Property Builder for GridView, the defaults are:
Header Text Alignment = Middle Center
Text Alignment = Middle Left.
This means that EVERY time I create a new grid, I have to remember to make them both the same.
Why make them different? It makes the grid look rubbish whenthe defaults are used.
Use the code below and click the button to make the grid ReadOnly:
public TestForm()
{
InitializeComponent();
GridViewCheckBoxColumn checkBoxColumn = new GridViewCheckBoxColumn("checkbox");
checkBoxColumn.EnableHeaderCheckBox = true;
this.radGridView1.Columns.Add(checkBoxColumn);
this.radGridView1.Columns.Add("text");
this.Shown += TestForm_Shown;
}
private void TestForm_Shown(object sender, EventArgs e)
{
this.radGridView1.Columns["checkbox"].IsVisible = !this.radGridView1.Columns["checkbox"].IsVisible;
}
private void radButton1_Click(object sender, EventArgs e)
{
this.radGridView1.ReadOnly = !this.radGridView1.ReadOnly;
}
To reproduce:
public RadForm1()
{
InitializeComponent();
this.radGridView1.Columns.Add("Telerik");
this.radGridView1.AutoSizeColumnsMode = GridViewAutoSizeColumnsMode.Fill;
for (int i = 0; i < 10; i++)
{
this.radGridView1.Rows.Add(Guid.NewGuid().ToString());
}
}
private void radButton1_Click(object sender, EventArgs e)
{
RadPrintDocument document = new RadPrintDocument();
document.DefaultPageSettings.Landscape = false;
this.radGridView1.PrintPreview(document);
}
Step 1: Open Print Settings dialog:
Step 2: Change the Orientation to Landscape:
Step 3: Click directly the Print button here. Once the default Print dialog is opened choose Preferences:
Step 4: You will notice that the Orientation is still Portrait instead of Landscape:
Steps to reproduce:
1. Bind the grid and enable the search row
2. Enter some search text
3. Delete records from the applied DataSource collection. It may be necessary to perform the delete operation several times before the error occurs.
The error can be reproduced with the following code snippet:
Dim dt As New DataTable
Sub New()
InitializeComponent()
dt.Columns.Add("Id", GetType(Integer))
dt.Columns.Add("Name", GetType(String))
For index = 1 To 10000
dt.Rows.Add(index, Guid.NewGuid.ToString())
Next
Me.RadGridView1.DataSource = dt
Me.RadGridView1.AutoSizeColumnsMode = Telerik.WinControls.UI.GridViewAutoSizeColumnsMode.Fill
Me.RadGridView1.AllowSearchRow = True
End Sub
Private Sub RadButton1_Click(sender As Object, e As EventArgs) Handles RadButton1.Click
For index = 1 To 50
dt.Rows.RemoveAt(0)
Next
End Sub
There is a sample project attached as well and its result is illustrated in the gif file.
Stack trace:
at Telerik.WinControls.UI.MasterGridViewTemplate.set_CurrentRow(GridViewRowInfo value) at Telerik.WinControls.UI.RadGridView.set_CurrentRow(GridViewRowInfo value) at Telerik.WinControls.UI.GridViewSearchRowInfo.SetCurrent(GridSearchResultCellInfo cell) at Telerik.WinControls.UI.GridViewSearchRowInfo.SetCurrent(GridSearchResultCellInfo cell, Boolean checkInvokeRequired) at Telerik.WinControls.UI.GridViewSearchRowInfo.SelectNextSearchResult() at Telerik.WinControls.UI.GridViewSearchRowInfo.Search(String criteria) at Telerik.WinControls.UI.GridViewSearchRowInfo.Telerik.WinControls.UI.IGridViewEventListener.PostProcessEvent(GridViewEvent eventData) at Telerik.WinControls.UI.GridViewEventProcessEntity.ProcessCollection(GridViewEvent gridEvent, PriorityWeakReferenceList list, GridEventProcessMode processMode) at Telerik.WinControls.UI.GridViewSynchronizationService.NotifyListeners(GridViewEvent gridEvent) at Telerik.WinControls.UI.GridViewSynchronizationService.FlushEvents() at Telerik.WinControls.UI.GridViewSynchronizationService.DispatchEvent(GridViewEvent gridEvent) at Telerik.WinControls.UI.GridViewSynchronizationService.DispatchEvent(GridViewTemplate template, GridViewEvent eventData, Boolean postUI) at Telerik.WinControls.UI.GridViewRowCollection.DispatchDataViewChangedEvent(DataViewChangedEventArgs args, GridEventType type) at Telerik.WinControls.UI.GridViewRowCollection.ListSource_CollectionChanged(Object sender, NotifyCollectionChangedEventArgs e) at Telerik.WinControls.Data.NotifyCollectionChangedEventHandler.Invoke(Object sender, NotifyCollectionChangedEventArgs e) at Telerik.WinControls.Data.RadListSource`1.OnCollectionChanged(NotifyCollectionChangedEventArgs e) at Telerik.WinControls.Data.RadListSource`1.RemoveItem(Int32 index) at Telerik.WinControls.Data.RadListSource`1.currencyManager_ListChanged(Object sender, ListChangedEventArgs e) at System.Windows.Forms.CurrencyManager.OnListChanged(ListChangedEventArgs e) at System.Windows.Forms.CurrencyManager.List_ListChanged(Object sender, ListChangedEventArgs e) at System.Windows.Forms.BindingSource.OnListChanged(ListChangedEventArgs e) at System.Windows.Forms.BindingSource.InnerList_ListChanged(Object sender, ListChangedEventArgs e) at System.ComponentModel.BindingList`1.OnListChanged(ListChangedEventArgs e) at System.ComponentModel.BindingList`1.FireListChanged(ListChangedType type, Int32 index) at System.ComponentModel.BindingList`1.RemoveItem(Int32 index) at System.Collections.ObjectModel.Collection`1.Remove(T item) at System.Collections.ObjectModel.Collection`1.System.Collections.IList.Remove(Object value) at System.Windows.Forms.BindingSource.Remove(Object value)
An exception occurs when trying to export the RadGridView using the ExportToPDF class with the following message.
System.SystemException: 'System.MethodAccessException: Attempt by security transparent method 'Telerik.Pdf.Gdi.GdiFontEnumerator.get_FamilyNames()' to call native code through method 'Telerik.WinControls.NativeMethods.EnumFontFamiliesEx(IntPtr, LOGFONT, FontEnumDelegate, Int32, Int32)' failed. Methods must be security critical or security safe-critical to call native code.
at Telerik.Pdf.Gdi.GdiFontEnumerator.get_FamilyNames()
at Telerik.Apoc.Pdf.FontSetup.AddSystemFonts(FontType fontType)
at Telerik.Apoc.Render.Pdf.PdfRenderer.SetupFontInfo(FontInfo fontInfo)
at Telerik.Apoc.Fo.FOTreeBuilder.Parse(XmlReader reader)'
This exception is observed only when the referenced DLLs target the .Net Framework 4.8 version.
When the font size of the OK and Cancel buttons inside the Excel-like filtering popup is increased, the buttons are cut.