Telerik Forums
UI for WinForms Forum
1 answer
218 views
Hello Forum Users

This is still a work in progress, but I thought that I'd share my routines with those of you that are interested and while there is room for optimization and correction - it does work.

Feel free to build upon this code for your own purposes - and share your improvements if you see fit to share back.

Preface:  I have a DAL (Data Access Layer) that returns datasets, datatables and so forth - so you are going to see a reference to oSQL --- which is my DAL.  You'll need to replace that with your own DAL or GetDataSet routines.

Scenario:  I have to hit three separate databases to build the grid and subgrids.  Not my choice.  So I use my DAL which is capable of hitting multiple databases rather than the Visual Studio method that creates bound datasets.  For example, if I did that I'd have so many bindingsource, dataset, etc objects on my screen I'd go crazy trying to manage them all... so the DAL is easier and less intrusive from that aspect.

As I hit the three SQL Databases I then needed to create a grid, sub-grid and another grid under one of the sub-grids.

This code shows how I did this - unbound.

I created a module file called: modRadGridViewRoutines which contains subroutines and also a class.  Shown below:

Imports Telerik.WinControls.UI

Module modRadGridViewRoutines
#Region " RadGridView Routines "
Friend Sub CreateMasterTemplate(ByVal oRadGridView As RadGridView, ByVal oMasterTemplateBindingSource As BindingSource, ByVal sMasterTemplateCaption As String, Optional ByVal bEnableGrouping As Boolean = True)
oRadGridView.EnableGrouping = bEnableGrouping
oRadGridView.DataSource = oMasterTemplateBindingSource
oRadGridView.GroupExpandAnimationType = GridExpandAnimationType.Slide
oRadGridView.EnableAlternatingRowColor = True
SetTemplateDefaults(oRadGridView.MasterTemplate)
oRadGridView.MasterTemplate.AutoSizeColumnsMode = GridViewAutoSizeColumnsMode.Fill
oRadGridView.MasterTemplate.Caption = sMasterTemplateCaption
oRadGridView.MasterTemplate.ShowChildViewCaptions = True
End Sub

Friend Sub AddChildTemplateToMasterTemplate(ByVal oRadGridView As RadGridView, ByVal oChildTemplate As GridViewTemplate, ByVal oChildTemplateBindingSource As BindingSource, ByVal sChildTemplateCaption As String)
oChildTemplate.DataSource = oChildTemplateBindingSource
oChildTemplate.Caption = sChildTemplateCaption
oRadGridView.MasterTemplate.Templates.Add(oChildTemplate)
End Sub

Friend Sub CreateRadGridViewMasterTemplateRelations(ByVal oRadGridView As RadGridView, ByVal oChildTemplate As GridViewTemplate, ByVal sRelationName As String, ByVal sParentColumnNames As String, ByVal sChildColumnNames As String)
Dim oRelation As New GridViewRelation(oRadGridView.MasterTemplate)
oRelation.ChildTemplate = oChildTemplate
oRelation.RelationName = sRelationName
oRelation.ParentColumnNames.Add(sParentColumnNames)
oRelation.ChildColumnNames.Add(sChildColumnNames)
oRadGridView.Relations.Add(oRelation)
End Sub

Friend Sub AddChildTemplateToChildTemplate(ByVal oChildTemplate As GridViewTemplate, ByVal oChildSubTemplate As GridViewTemplate, ByVal oChildSubTemplateBindingSource As BindingSource, ByVal sChildSubTemplateCaption As String)
oChildSubTemplate.DataSource = oChildSubTemplateBindingSource
oChildSubTemplate.Caption = sChildSubTemplateCaption
oChildTemplate.Templates.Add(oChildSubTemplate)
End Sub

Friend Sub CreateRadGridViewChildTemplateRelations(ByVal oRadGridView As RadGridView, ByVal oChildTemplate As GridViewTemplate, ByVal oChildSubTemplate As GridViewTemplate, ByVal oRadGridViewRelationsClass As List(Of RadGridViewRelationsClass))
Dim oRelation As New GridViewRelation(oChildTemplate)
oRelation.ChildTemplate = oChildSubTemplate
For i = 0 To oRadGridViewRelationsClass.Count - 1
oRelation.RelationName = oRadGridViewRelationsClass.Item(i).RelationName
oRelation.ParentColumnNames.Add(oRadGridViewRelationsClass.Item(i).ParentFieldName)
oRelation.ChildColumnNames.Add(oRadGridViewRelationsClass.Item(i).ChildFieldName)
Next
oRadGridView.Relations.Add(oRelation)
End Sub

Friend Sub SetTemplateDefaults(ByVal oGridViewTemplate As GridViewTemplate)
oGridViewTemplate.ReadOnly = True
oGridViewTemplate.AllowRowResize = True
oGridViewTemplate.EnableAlternatingRowColor = True
oGridViewTemplate.AllowAddNewRow = False
oGridViewTemplate.AllowDeleteRow = False
oGridViewTemplate.AllowEditRow = False
End Sub
#End Region
End Module

Public Class RadGridViewRelationsClass
Private _RelationName As String
Private _ParentFieldName As String
Private _ChildFieldName As String

Public Sub New(ByVal sRelationName As String, ByVal sParentFieldName As String, ByVal sChildFieldName As String)
_RelationName = sRelationName
_ParentFieldName = sParentFieldName
_ChildFieldName = sChildFieldName
End Sub

Public Property RelationName As String
Get
Return _RelationName
End Get
Set(value As String)
_RelationName = value
End Set
End Property

Public Property ParentFieldName As String
Get
Return _ParentFieldName
End Get
Set(value As String)
_ParentFieldName = value
End Set
End Property

Public Property ChildFieldName As String
Get
Return _ChildFieldName
End Get
Set(value As String)
_ChildFieldName = value
End Set
End Property
End Class

Here is the example of how the class is used:

Private Sub GetOrders
SQL = "Select * From View_Orders ORDER BY TxnDate ASC"
Dim dtOrders As DataTable = oSQL.GetDataTable(SQL) : dtOrders.TableName = "Orders"

SQL = "Select * From View_OrderItems ORDER BY OrderID, TxnDate ASC"
Dim dtOrderItems As New DataTable : dtOrderItems = oSQL.GetDataTable(SQL) : dtOrderItems.TableName = "OrderItems"

SQL = "Select id, CustomerRefListID, ShipAddressFormatted From Orders"
Dim dtCustomerAddress As New DataTable : dtCustomerAddress = oSQL.GetDataTable(SQL) : dtCustomerAddress.TableName = "CustomerAddress"

SQL = "Select * From View_OrderItemComponentsToProductComponents"
Dim dtProductComponents As New DataTable : dtProductComponents = oSQL.GetDataTable(SQL) : dtProductComponents.TableName = "ProductComponents"

'programmatically create a new dataset only adding those products having sub components.
'Add the dataset to the orderitems template and connect it via the product code...

Dim dsDataCombined = New DataSet
dsDataCombined.Tables.Add(dtOrders.Copy)
dsDataCombined.Tables.Add(dtOrderItems.Copy)
dsDataCombined.Tables.Add(dtCustomerAddress.Copy)
dsDataCombined.Tables.Add(dtProductComponents.Copy)
rgvOrders.DataSource = dsDataCombined

dtOrders = Nothing
dtOrderItems = Nothing
dtCustomerAddress = Nothing
dtProductComponents = Nothing

Dim OrdersBindingSource As New BindingSource
OrdersBindingSource.DataSource = dsDataCombined : OrdersBindingSource.DataMember = dsDataCombined.Tables(0).TableName

Dim OrderItemsBindingSource As New BindingSource
OrderItemsBindingSource.DataSource = dsDataCombined : OrderItemsBindingSource.DataMember = dsDataCombined.Tables(1).TableName

Dim CustomerAddressBindingSource As New BindingSource
CustomerAddressBindingSource.DataSource = dsDataCombined : CustomerAddressBindingSource.DataMember = dsDataCombined.Tables(2).TableName

Dim ProductComponentsBindingSource As New BindingSource
ProductComponentsBindingSource.DataSource = dsDataCombined : ProductComponentsBindingSource.DataMember = dsDataCombined.Tables(3).TableName

CreateMasterTemplate(rgvOrders, OrdersBindingSource, "Customer Order")

Dim OrderItemsTemplate As New GridViewTemplate()
AddChildTemplateToMasterTemplate(rgvOrders, OrderItemsTemplate, OrderItemsBindingSource, "Order Items/Details")
CreateRadGridViewMasterTemplateRelations(rgvOrders, OrderItemsTemplate, "OrderToOrderItems", "id", "OrderID")
SetTemplateDefaults(OrderItemsTemplate)

Dim CustomerAddressTemplate As New GridViewTemplate()
AddChildTemplateToMasterTemplate(rgvOrders, CustomerAddressTemplate, CustomerAddressBindingSource, "Customer Address Information")
CreateRadGridViewMasterTemplateRelations(rgvOrders, CustomerAddressTemplate, "CustomerAddress", "id", "id")
SetTemplateDefaults(CustomerAddressTemplate)

Dim ProductComponentsTemplate As New GridViewTemplate()
AddChildTemplateToChildTemplate(OrderItemsTemplate, ProductComponentsTemplate, ProductComponentsBindingSource, "Product Unbuild")

ProductNumberToParentProductNumberRelations = New List(Of RadGridViewRelationsClass)()
ProductNumberToParentProductNumberRelations.Add(New RadGridViewRelationsClass("ComponentsToOrderItems", "ProductNumber", "ParentProductNumber"))
ProductNumberToParentProductNumberRelations.Add(New RadGridViewRelationsClass("ComponentsToOrderItemsOrderID", "OrderID", "OrderItemID"))

CreateRadGridViewChildTemplateRelations(rgvOrders, OrderItemsTemplate, ProductComponentsTemplate, ProductNumberToParentProductNumberRelations)
SetTemplateDefaults(ProductComponentsTemplate)
End Sub


This portion of the code:

#Region " List(of) Variables "
Private ProductNumberToParentProductNumberRelations As List(Of RadGridViewRelationsClass)
#End Region

SQL = "Select * From View_Orders ORDER BY TxnDate ASC"
Dim dtOrders As DataTable = oSQL.GetDataTable(SQL) : dtOrders.TableName = "Orders"

SQL = "Select * From View_OrderItems ORDER BY OrderID, TxnDate ASC"
Dim dtOrderItems As New DataTable : dtOrderItems = oSQL.GetDataTable(SQL) : dtOrderItems.TableName = "OrderItems"

SQL = "Select id, CustomerRefListID, ShipAddressFormatted From Orders"
Dim dtCustomerAddress As New DataTable : dtCustomerAddress = oSQL.GetDataTable(SQL) : dtCustomerAddress.TableName = "CustomerAddress"

SQL = "Select * From View_OrderItemComponentsToProductComponents"
Dim dtProductComponents As New DataTable : dtProductComponents = oSQL.GetDataTable(SQL) : dtProductComponents.TableName = "ProductComponents"

'programmatically create a new dataset only adding those products having sub components.
'Add the dataset to the orderitems template and connect it via the product code...

Dim dsDataCombined = New DataSet
dsDataCombined.Tables.Add(dtOrders.Copy)
dsDataCombined.Tables.Add(dtOrderItems.Copy)
dsDataCombined.Tables.Add(dtCustomerAddress.Copy)
dsDataCombined.Tables.Add(dtProductComponents.Copy)
rgvOrders.DataSource = dsDataCombined

dtOrders = Nothing
dtOrderItems = Nothing
dtCustomerAddress = Nothing
dtProductComponents = Nothing

Dim OrdersBindingSource As New BindingSource
OrdersBindingSource.DataSource = dsDataCombined : OrdersBindingSource.DataMember = dsDataCombined.Tables(0).TableName

Dim OrderItemsBindingSource As New BindingSource
OrderItemsBindingSource.DataSource = dsDataCombined : OrderItemsBindingSource.DataMember = dsDataCombined.Tables(1).TableName

Dim CustomerAddressBindingSource As New BindingSource
CustomerAddressBindingSource.DataSource = dsDataCombined : CustomerAddressBindingSource.DataMember = dsDataCombined.Tables(2).TableName

Dim ProductComponentsBindingSource As New BindingSource
ProductComponentsBindingSource.DataSource = dsDataCombined : ProductComponentsBindingSource.DataMember = dsDataCombined.Tables(3).TableName

CreateMasterTemplate(rgvOrders, OrdersBindingSource, "Customer Order")

Dim OrderItemsTemplate As New GridViewTemplate()
AddChildTemplateToMasterTemplate(rgvOrders, OrderItemsTemplate, OrderItemsBindingSource, "Order Items/Details")
CreateRadGridViewMasterTemplateRelations(rgvOrders, OrderItemsTemplate, "OrderToOrderItems", "id", "OrderID")
SetTemplateDefaults(OrderItemsTemplate)

Dim CustomerAddressTemplate As New GridViewTemplate()
AddChildTemplateToMasterTemplate(rgvOrders, CustomerAddressTemplate, CustomerAddressBindingSource, "Customer Address Information")
CreateRadGridViewMasterTemplateRelations(rgvOrders, CustomerAddressTemplate, "CustomerAddress", "id", "id")
SetTemplateDefaults(CustomerAddressTemplate)

Dim ProductComponentsTemplate As New GridViewTemplate()
AddChildTemplateToChildTemplate(OrderItemsTemplate, ProductComponentsTemplate, ProductComponentsBindingSource, "Product Unbuild")

ProductNumberToParentProductNumberRelations = New List(Of RadGridViewRelationsClass)()
ProductNumberToParentProductNumberRelations.Add(New RadGridViewRelationsClass("ComponentsToOrderItems", "ProductNumber", "ParentProductNumber"))
ProductNumberToParentProductNumberRelations.Add(New RadGridViewRelationsClass("ComponentsToOrderItemsOrderID", "OrderID", "OrderItemID"))

CreateRadGridViewChildTemplateRelations(rgvOrders, OrderItemsTemplate, ProductComponentsTemplate, ProductNumberToParentProductNumberRelations)
       
Uses the class found within modRadGridViewRoutines to create a multiple filter for the final (3rd Tier) grid.

Hopefully you'll find this usefull as a base for your own routines and I'll say once again that it's a work in progress even for me.

Please share your optimizations and upgrades to this code if you find it helpful so that all of us can benefit from it. :)










George
Telerik team
 answered on 10 Mar 2014
11 answers
246 views
Why is it that when there are more appointments than can be displayed on a single day, the month view does not have scroll bars to view the additional items.... but the timeline view does?

We absolutely love the way that the timeline view has scrollbars to see all the additional items. We are getting an absurd number of complaints from our customers about how the month view forces them into the day view just to see what appointments they have that day.

We deal with accountants, chiropractors, lawyers, and other service representatives that can have 20+ appointments per day. And they want to be able to see all those appointments on the month view without having to switch to different view types.

Is there any possible way we can get an option to display scroll bars on the month view when there are too many appointments to display on one day? This has really turned out to be a critical issue for us....
George
Telerik team
 answered on 10 Mar 2014
6 answers
241 views
I would like to update a RadPageView which is in the Stack ViewMode to have the selected and selected page titles look the same. In the attached screenshot I would like to have "Page 1" and "Page 2" appear the same (i.e. blue background with white text). I can't seem to find the properties to set the colors (background and foreground) and font to achieve what I want.

How can I customize the RadPageViewPage titles?
Paul B
Top achievements
Rank 2
 answered on 07 Mar 2014
5 answers
231 views
Cursor Does Not Apperar in  right to left when langueg is arabic in all editors as(Text Box)
how to get the cursor far for 2 pixel from right side
George
Telerik team
 answered on 07 Mar 2014
3 answers
145 views
Hi,

As seen in 1.png i have loaded some stuff from my db ... but what i would actually love to do is have something like in the 2.png what telerik has done. So basically take the info from the colums (maybe a column where all the image paths for items are stored too) and put all that info per item....

Is there a simple way of doing it?


So far what i've done is just bind data to radlistview and have this in form load :     Me.Table1TableAdapter.Fill(Me.TestDataSet.Table1)


Any help would be greately appreciated.


Cheers
Dimitar
Telerik team
 answered on 07 Mar 2014
2 answers
162 views
Hello,
I am asking how can I copy a button from RadRibbonGroup to another RadRibbonGroup, because I don't want to make a style for every button I created.

As you see on attached image I need to copy the button with red border to next RadRibbonGroup
Dess | Tech Support Engineer, Principal
Telerik team
 answered on 07 Mar 2014
2 answers
327 views
Double clicking the right mouse button on a grid is firing the Grid.CellDoubleClick event, but the event does not expose which mouse button caused the event to fire.

Is there a way to prevent the CellDoubleClick even from firing when the right mouse is double clicked?

Kim
Kim
Top achievements
Rank 1
 answered on 06 Mar 2014
2 answers
160 views
I use manually generating hierarchy mode as it is described in http://www.telerik.com/help/winforms/gridview-hierarchical-grid-object-relational-hierarchy-mode.html
For bool fields I use GridViewCheckBoxColumn.
When I change bounded bool field in child object, the changes in CheckBoxEditor are not displayed (and vice versa, when I click a CheckBoxEditor, the changes are not reflected in object).
If I press a header for reorder, then the changes are partially displayed, but couple of checkbox are not change.

In debugger I see (rgvMain is RadGridView):

rgvMain.CurrentRow.ChildRows[1]:

    {Telerik.WinControls.UI.GridViewHierarchyRowInfo}
    [Telerik.WinControls.UI.GridViewHierarchyRowInfo]: {Telerik.WinControls.UI.GridViewHierarchyRowInfo}
    AllowedStates: Current | Selected
    AllowResize: true
    Cache: {Telerik.WinControls.UI.GridViewRowInfoCache}
    CanBeCurrent: true
    CanBeExpanded: false
    CanBeSelected: true
    Cells: {Telerik.WinControls.UI.GridViewCellInfoCollection}
    ChildRows: {Telerik.WinControls.UI.GridViewChildRowCollection}
    DataBoundItem: {UsonInfrastructure.Infrastructure.UserData.AccessProjection}
    dataBoundItem: {UsonInfrastructure.Infrastructure.UserData.AccessProjection}
    ErrorText: ""
    Group: null
    HasChildViews: false
    Height: 18
    HierarchyLevel: 1
    Index: 0
    IsAttached: true
    IsCurrent: false
    IsEditable: true
    IsExpanded: false
    IsInitialized: false
    IsModified: false
    IsOdd: false
    IsPinned: false
    IsSelected: false
    IsSystem: false
    IsValid: true
    IsVisible: true
    MaxHeight: -1
    MinHeight: 5
    parent: {Telerik.WinControls.UI.GridViewHierarchyRowInfo}
    Parent: {Telerik.WinControls.UI.GridViewHierarchyRowInfo}
    ParentRow: null
    PinPosition: None
    PropertyChanged: {Method = {Void RowInfo_PropertyChanged(System.Object, System.ComponentModel.PropertyChangedEventArgs)}}
    PropertyChanging: null
    RowElementType: {Name = "GridDataRowElement" FullName = "Telerik.WinControls.UI.GridDataRowElement"}
    rowState: {Telerik.WinControls.UI.GridViewRowInfo.GridViewRowInfoState}
    state: {BitVector32{00000000000000000000000001100001}}
    Tag: null
    Telerik.WinControls.Data.IDataItem.DataBoundItem: {UsonInfrastructure.Infrastructure.UserData.AccessProjection}
    Telerik.WinControls.Data.IDataItem.FieldCount: 3
    ViewInfo: {Telerik.WinControls.UI.GridViewInfo}
    viewInfo: {Telerik.WinControls.UI.GridViewInfo}
    ViewTemplate: {Telerik.WinControls.UI.GridViewTemplate}


rgvMain.CurrentRow.ChildRows[1].Cells[1].ColumnInfo

    {Reading (GridViewCheckBoxColumn)}
    [Telerik.WinControls.UI.GridViewCheckBoxColumn]: {Reading (GridViewCheckBoxColumn)}
    base {Telerik.WinControls.RadObject}: {Reading (GridViewCheckBoxColumn)}
    Accessor: {Telerik.WinControls.UI.VirtualHierarchyAccessor}
    accessor: {Telerik.WinControls.UI.VirtualHierarchyAccessor}
    AllowGroup: true
    AllowHide: true
    AllowReorder: true
    AllowResize: true
    AllowSort: true
    AutoEllipsis: true
    AutoSizeMode: DisplayedCells
    CanBeCurrent: true
    CanGroup: true
    CanSort: true
    CanStretch: false
    ConditionalFormattingObjectList: Count = 0
    conditionalFormattingObjects: Count = 0
    CustomDataOperation: None
    DisableHTMLRendering: true
    EnableExpressionEditor: false
    EventDispatcher: {Telerik.WinControls.UI.EventDispatcher}
    Expression: ""
    FieldAlias: ""
    FieldName: "ReadAccess"
    HeaderImage: null
    HeaderText: "Reading"
    HeaderTextAlignment: MiddleCenter
    ImageLayout: None
    Index: 1
    IsAutoGenerated: false
    IsCurrent: true
    IsDataBound: false        !!!!! may be this is a cause?
    IsFieldNamePath: false
    isFieldNamePath: false
    IsGrouped: false
    IsPinned: false
    IsSorted: false
    IsVisible: true
    MaxWidth: 60
    MinWidth: 60
    Name: "ReadAccesseffcd8a0-48d6-4e0d-9cda-4ba02cb0b53f"
    ownerTemplate: {Telerik.WinControls.UI.GridViewTemplate}
    OwnerTemplate: {Telerik.WinControls.UI.GridViewTemplate}
    PinPosition: None
    PropertyChanging: null
    ReadOnly: false
    RowSpan: 20
    sortOrder: None
    SortOrder: None
    StretchVertically: true
    Tag: null
    TextAlignment: MiddleLeft
    TextImageRelation: Overlay
    UniqueName: "ReadAccesseffcd8a0-48d6-4e0d-9cda-4ba02cb0b53f"
    VisibleInColumnChooser: true
    Width: 60
    WrapText: false
Dess | Tech Support Engineer, Principal
Telerik team
 answered on 06 Mar 2014
1 answer
124 views
Hello,

I have created a custom appointment and I want to include some recurrence items in my appointment dialog. I have also saved my appointment and recurrence string to a db table.

Basically based on the recurrence of the appointment I need to watch for that recurrence and fire an event.

My question is, is there a way/method to interpret that recurrence string which would allow me to watch for it when the clock and date ticks by.

Thanks

Gavin
Dess | Tech Support Engineer, Principal
Telerik team
 answered on 06 Mar 2014
2 answers
112 views
I have a Grid that is bound to a Dataset that is created programmatically and the grid uses "auto-generated columns at runtime"
I need to hide some columns after databound, depending on some know conditions.
Where can I get access to the column collection ? In the Databound event the grid.columns.count is zero ...
thanks
pierre-jean
Top achievements
Rank 1
Veteran
Iron
 answered on 06 Mar 2014
Narrow your results
Selected tags
Tags
GridView
General Discussions
Scheduler and Reminder
Treeview
Dock
RibbonBar
Themes and Visual Style Builder
ChartView
Calendar, DateTimePicker, TimePicker and Clock
DropDownList
Buttons, RadioButton, CheckBox, etc
ListView
ComboBox and ListBox (obsolete as of Q2 2010)
Form
Chart (obsolete as of Q1 2013)
PageView
MultiColumn ComboBox
TextBox
RichTextEditor
PropertyGrid
Menu
RichTextBox (obsolete as of Q3 2014 SP1)
Panelbar (obsolete as of Q2 2010)
PivotGrid and PivotFieldList
Tabstrip (obsolete as of Q2 2010)
MaskedEditBox
CommandBar
PdfViewer and PdfViewerNavigator
ListControl
Carousel
GanttView
Diagram, DiagramRibbonBar, DiagramToolBox
Panorama
New Product Suggestions
VirtualGrid
Toolstrip (obsolete as of Q3 2010)
AutoCompleteBox
Label
Spreadsheet
ContextMenu
Panel
Visual Studio Extensions
TitleBar
Documentation
SplitContainer
Map
DesktopAlert
CheckedDropDownList
ProgressBar
TrackBar
MessageBox
Rotator
SpinEditor
CheckedListBox
StatusStrip
LayoutControl
SyntaxEditor
Wizard
ShapedForm
TextBoxControl
CollapsiblePanel
Conversational UI, Chat
DateTimePicker
TabbedForm
CAB Enabling Kit
GroupBox
WaitingBar
DataEntry
ScrollablePanel
ScrollBar
ImageEditor
Tools - VSB, Control Spy, Shape Editor
BrowseEditor
DataFilter
FileDialogs
ColorDialog
Gauges (RadialGauge, LinearGauge, BulletGraph)
ApplicationMenu
RangeSelector
CardView
WebCam
BindingNavigator
Styling
Barcode
PopupEditor
RibbonForm
TaskBoard
Callout
NavigationView
ColorBox
PictureBox
FilterView
Accessibility
VirtualKeyboard
DataLayout
Licensing
ToastNotificationManager
ValidationProvider
CalculatorDropDown
Localization
TimePicker
BreadCrumb
ButtonTextBox
FontDropDownList
BarcodeView
Security
LocalizationProvider
Dictionary
SplashScreen
Overlay
Flyout
Separator
SparkLine
TreeMap
StepProgressBar
ToolbarForm
NotifyIcon
DateOnlyPicker
AI Coding Assistant
Rating
TimeSpanPicker
Calculator
OfficeNavigationBar
TaskbarButton
HeatMap
SlideView
PipsPager
AIPrompt
TaskDialog
TimeOnlyPicker
+? more
Top users last month
Rob
Top achievements
Rank 3
Bronze
Bronze
Iron
Sergii
Top achievements
Rank 1
Iron
Iron
Dedalus
Top achievements
Rank 1
Iron
Iron
Lan
Top achievements
Rank 1
Iron
Doug
Top achievements
Rank 1
Want to show your ninja superpower to fellow developers?
Top users last month
Rob
Top achievements
Rank 3
Bronze
Bronze
Iron
Sergii
Top achievements
Rank 1
Iron
Iron
Dedalus
Top achievements
Rank 1
Iron
Iron
Lan
Top achievements
Rank 1
Iron
Doug
Top achievements
Rank 1
Want to show your ninja superpower to fellow developers?
Want to show your ninja superpower to fellow developers?