Telerik Forums
UI for WinForms Forum
1 answer
233 views
Hi,

I think I will get points on this also !

The default behavior of System.Windows.Forms.Button control is when it is visible true then only it will fire an event of Escape or Enter/Return key (When Form object's AcceptButton or CancelButton property is set to particular button). And if it is visible false, it will not fire any event.

Now in RADButton, it always fires event even if control is visible false !

Regards,
Divyesh Chapaneri
Nick
Telerik team
 answered on 12 Feb 2009
1 answer
548 views
Hi,
   i'm using Visual Studio 2008 with SP1 and Telerik Controls fro WinForms Q3 2008 SP2 and i have problems with the Element Hierarchy editor on a form: on every RADControl i chose to 'Edit UI elements' the Editor window appears, but when i move from root node to another node the window disappear and Visual Studio starts to show the message in object (RootRadElement cannot be converted to type 'System.Windows.Forms.Control') and i must restart the IDE. Any suggestion to resolve this problem? i cannot work in this manner....

This is the .Designer.cs files generated from VS

partial class frmGenerazioneEsplosi {  
        /// <summary>  
        /// Required designer variable.  
        /// </summary>  
        private System.ComponentModel.IContainer components = null;  
 
        /// <summary>  
        /// Clean up any resources being used.  
        /// </summary>  
        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>  
        protected override void Dispose(bool disposing) {  
            if (disposing && (components != null)) {  
                components.Dispose();  
            }  
            base.Dispose(disposing);  
        }
        #region Windows Form Designer generated code  
 
        /// <summary>  
        /// Required method for Designer support - do not modify  
        /// the contents of this method with the code editor.  
        /// </summary>  
        private void InitializeComponent() {  
            this.components = new System.ComponentModel.Container();  
            this.rgvEsplosi = new Telerik.WinControls.UI.RadGridView();  
            this.rlbRicambi = new Telerik.WinControls.UI.RadListBox();  
            this.telerikTheme1 = new Telerik.WinControls.Themes.TelerikTheme();  
            this.rtsGenerazioneEsplosi = new Telerik.WinControls.UI.RadToolStrip();  
            this.radToolStripElement1 = new Telerik.WinControls.UI.RadToolStripElement();  
            this.radToolStripItem1 = new Telerik.WinControls.UI.RadToolStripItem();  
            this.cmdDelete = new Telerik.WinControls.UI.RadImageButtonElement();  
            this.cmdLock = new Telerik.WinControls.UI.RadImageButtonElement();  
            this.cmdUnlock = new Telerik.WinControls.UI.RadImageButtonElement();  
            this.rcmRicambi = new Telerik.WinControls.UI.RadContextMenu();  
            this.rmiAssociaRicambio = new Telerik.WinControls.UI.RadMenuItem();  
            this.radContextMenuManager1 = new Telerik.WinControls.UI.RadContextMenuManager();  
            this.tabapprBindingSource = new System.Windows.Forms.BindingSource(this.components);  
            this.dsBus = new RicambiDotNet.dsBus();  
            this.tabapprTableAdapter = new RicambiDotNet.dsBusTableAdapters.tabapprTableAdapter();  
            ((System.ComponentModel.ISupportInitialize)(this.rgvEsplosi)).BeginInit();  
            ((System.ComponentModel.ISupportInitialize)(this.rgvEsplosi.MasterGridViewTemplate)).BeginInit();  
            ((System.ComponentModel.ISupportInitialize)(this.rlbRicambi)).BeginInit();  
            ((System.ComponentModel.ISupportInitialize)(this.rtsGenerazioneEsplosi)).BeginInit();  
            ((System.ComponentModel.ISupportInitialize)(this.tabapprBindingSource)).BeginInit();  
            ((System.ComponentModel.ISupportInitialize)(this.dsBus)).BeginInit();  
            this.SuspendLayout();  
            //   
            // rgvEsplosi  
            //   
            this.rgvEsplosi.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)  
                                    | System.Windows.Forms.AnchorStyles.Left)  
                                    | System.Windows.Forms.AnchorStyles.Right)));  
            this.rgvEsplosi.AutoScroll = true;  
            this.rgvEsplosi.BackColor = System.Drawing.SystemColors.Control;  
            this.rgvEsplosi.Cursor = System.Windows.Forms.Cursors.Arrow;  
            this.rgvEsplosi.EnableAlternatingRowColor = true;  
            this.rgvEsplosi.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F);  
            this.rgvEsplosi.ForeColor = System.Drawing.SystemColors.ControlText;  
            this.rgvEsplosi.ImeMode = System.Windows.Forms.ImeMode.NoControl;  
            this.rgvEsplosi.Location = new System.Drawing.Point(12, 38);  
            //   
            //   
            //   
            this.rgvEsplosi.MasterGridViewTemplate.AllowAddNewRow = false;  
            this.rgvEsplosi.MasterGridViewTemplate.AllowCellContextMenu = false;  
            this.rgvEsplosi.MasterGridViewTemplate.AllowColumnChooser = false;  
            this.rgvEsplosi.MasterGridViewTemplate.AllowColumnHeaderContextMenu = false;  
            this.rgvEsplosi.MasterGridViewTemplate.AllowColumnReorder = false;  
            this.rgvEsplosi.MasterGridViewTemplate.AllowDragToGroup = false;  
            this.rgvEsplosi.MasterGridViewTemplate.AutoSizeColumnsMode = Telerik.WinControls.UI.GridViewAutoSizeColumnsMode.Fill;  
            this.rgvEsplosi.MasterGridViewTemplate.EnableFiltering = true;  
            this.rgvEsplosi.MasterGridViewTemplate.EnableGrouping = false;  
            this.rgvEsplosi.MultiSelect = true;  
            this.rgvEsplosi.Name = "rgvEsplosi";  
            this.rgvEsplosi.ReadOnly = true;  
            this.rgvEsplosi.RightToLeft = System.Windows.Forms.RightToLeft.No;  
            this.rgvEsplosi.ShowGroupPanel = false;  
            this.rgvEsplosi.Size = new System.Drawing.Size(552, 363);  
            this.rgvEsplosi.TabIndex = 0;  
            this.rgvEsplosi.Text = "radGridViewPreview";  
            this.rgvEsplosi.ThemeName = "Telerik";  
            this.rgvEsplosi.CellFormatting += new Telerik.WinControls.UI.CellFormattingEventHandler(this.rgvEsplosi_CellFormatting);  
            this.rgvEsplosi.SelectionChanged += new System.EventHandler(this.rgvEsplosi_SelectionChanged);  
            ((Telerik.WinControls.UI.GridTableElement)(this.rgvEsplosi.GetChildAt(0))).Text = "No Data to display";  
            ((Telerik.WinControls.UI.GridTableElement)(this.rgvEsplosi.GetChildAt(0))).TextRenderingHint = System.Drawing.Text.TextRenderingHint.ClearTypeGridFit;  
            //   
            // rlbRicambi  
            //   
            this.rlbRicambi.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)  
                                    | System.Windows.Forms.AnchorStyles.Right)));  
            this.rlbRicambi.Location = new System.Drawing.Point(570, 62);  
            this.rlbRicambi.Name = "rlbRicambi";  
            this.rlbRicambi.Size = new System.Drawing.Size(181, 231);  
            this.rlbRicambi.TabIndex = 1;  
            this.rlbRicambi.ThemeName = "Telerik";  
            //   
            // rtsGenerazioneEsplosi  
            //   
            this.rtsGenerazioneEsplosi.AllowDragging = false;  
            this.rtsGenerazioneEsplosi.AllowFloating = false;  
            this.rtsGenerazioneEsplosi.Dock = System.Windows.Forms.DockStyle.Top;  
            this.rtsGenerazioneEsplosi.Items.AddRange(new Telerik.WinControls.RadItem[] {  
            this.radToolStripElement1});  
            this.rtsGenerazioneEsplosi.Location = new System.Drawing.Point(0, 0);  
            this.rtsGenerazioneEsplosi.MinimumSize = new System.Drawing.Size(5, 5);  
            this.rtsGenerazioneEsplosi.Name = "rtsGenerazioneEsplosi";  
            this.rtsGenerazioneEsplosi.Orientation = System.Windows.Forms.Orientation.Horizontal;  
            //   
            //   
            //   
            this.rtsGenerazioneEsplosi.RootElement.AutoSizeMode = Telerik.WinControls.RadAutoSizeMode.WrapAroundChildren;  
            this.rtsGenerazioneEsplosi.RootElement.MinSize = new System.Drawing.Size(5, 5);  
            this.rtsGenerazioneEsplosi.ShowOverFlowButton = false;  
            this.rtsGenerazioneEsplosi.Size = new System.Drawing.Size(756, 26);  
            this.rtsGenerazioneEsplosi.TabIndex = 3;  
            this.rtsGenerazioneEsplosi.Text = "radToolStrip1";  
            this.rtsGenerazioneEsplosi.ThemeName = "Telerik";  
            ((Telerik.WinControls.Layouts.StripLayoutPanel)(this.rtsGenerazioneEsplosi.GetChildAt(0).GetChildAt(1))).ShouldPaint = true;  
            //   
            // radToolStripElement1  
            //   
            this.radToolStripElement1.Items.AddRange(new Telerik.WinControls.RadItem[] {  
            this.radToolStripItem1});  
            this.radToolStripElement1.Margin = new System.Windows.Forms.Padding(0, 1, 0, 0);  
            this.radToolStripElement1.MinSize = new System.Drawing.Size(0, 21);  
            this.radToolStripElement1.Name = "radToolStripElement1";  
            this.radToolStripElement1.Text = "radToolStripElement1";  
            //   
            // radToolStripItem1  
            //   
            this.radToolStripItem1.Class = "ToolStripItem";  
            this.radToolStripItem1.Items.AddRange(new Telerik.WinControls.RadItem[] {  
            this.cmdDelete,  
            this.cmdLock,  
            this.cmdUnlock});  
            this.radToolStripItem1.Key = "0";  
            this.radToolStripItem1.MinSize = new System.Drawing.Size(25, 21);  
            this.radToolStripItem1.Name = "radToolStripItem1";  
            this.radToolStripItem1.Text = "radToolStripItem1";  
            //   
            // cmdDelete  
            //   
            this.cmdDelete.Alignment = System.Drawing.ContentAlignment.MiddleLeft;  
            this.cmdDelete.CanFocus = true;  
            this.cmdDelete.Image = global::RicambiDotNet.Properties.Resources.imgDelete;  
            this.cmdDelete.ImageAlignment = System.Drawing.ContentAlignment.MiddleCenter;  
            this.cmdDelete.Name = "cmdDelete";  
            this.cmdDelete.Text = "radImageButtonElement3";  
            this.cmdDelete.ToolTipText = "Elimina esploso";  
            //   
            // cmdLock  
            //   
            this.cmdLock.Alignment = System.Drawing.ContentAlignment.MiddleLeft;  
            this.cmdLock.CanFocus = true;  
            this.cmdLock.Image = global::RicambiDotNet.Properties.Resources.imgLock;  
            this.cmdLock.ImageAlignment = System.Drawing.ContentAlignment.MiddleCenter;  
            this.cmdLock.Name = "cmdLock";  
            this.cmdLock.Text = "radImageButtonElement1";  
            //   
            // cmdUnlock  
            //   
            this.cmdUnlock.Alignment = System.Drawing.ContentAlignment.MiddleLeft;  
            this.cmdUnlock.CanFocus = true;  
            this.cmdUnlock.Image = global::RicambiDotNet.Properties.Resources.imgUnlock;  
            this.cmdUnlock.ImageAlignment = System.Drawing.ContentAlignment.MiddleCenter;  
            this.cmdUnlock.Name = "cmdUnlock";  
            this.cmdUnlock.Text = "radImageButtonElement1";  
            //   
            // rcmRicambi  
            //   
            this.rcmRicambi.Items.AddRange(new Telerik.WinControls.RadItem[] {  
            this.rmiAssociaRicambio});  
            //   
            // rmiAssociaRicambio  
            //   
            this.rmiAssociaRicambio.Name = "rmiAssociaRicambio";  
            this.rmiAssociaRicambio.Text = "Associa ricambio";  
            //   
            // tabapprBindingSource  
            //   
            this.tabapprBindingSource.DataMember = "tabappr";  
            this.tabapprBindingSource.DataSource = this.dsBus;  
            //   
            // dsBus  
            //   
            this.dsBus.DataSetName = "dsBus";  
            this.dsBus.SchemaSerializationMode = System.Data.SchemaSerializationMode.IncludeSchema;  
            //   
            // tabapprTableAdapter  
            //   
            this.tabapprTableAdapter.ClearBeforeFill = true;  
            //   
            // frmGenerazioneEsplosi  
            //   
            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);  
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;  
            this.ClientSize = new System.Drawing.Size(756, 427);  
            this.Controls.Add(this.rtsGenerazioneEsplosi);  
            this.Controls.Add(this.rlbRicambi);  
            this.Controls.Add(this.rgvEsplosi);  
            this.MaximizeBox = false;  
            this.MinimizeBox = false;  
            this.Name = "frmGenerazioneEsplosi";  
            this.Text = "frmWizardGenerazioneEsplosi";  
            this.Load += new System.EventHandler(this.frmGenerazioneEsplosi_Load);  
            ((System.ComponentModel.ISupportInitialize)(this.rgvEsplosi.MasterGridViewTemplate)).EndInit();  
            ((System.ComponentModel.ISupportInitialize)(this.rgvEsplosi)).EndInit();  
            ((System.ComponentModel.ISupportInitialize)(this.rlbRicambi)).EndInit();  
            ((System.ComponentModel.ISupportInitialize)(this.rtsGenerazioneEsplosi)).EndInit();  
            ((System.ComponentModel.ISupportInitialize)(this.tabapprBindingSource)).EndInit();  
            ((System.ComponentModel.ISupportInitialize)(this.dsBus)).EndInit();  
            this.ResumeLayout(false);  
            this.PerformLayout();  
 
        }
        #endregion  
 
        private Telerik.WinControls.UI.RadGridView rgvEsplosi;  
        private dsBus dsBus;  
        private System.Windows.Forms.BindingSource tabapprBindingSource;  
        private RicambiDotNet.dsBusTableAdapters.tabapprTableAdapter tabapprTableAdapter;  
        private Telerik.WinControls.UI.RadListBox rlbRicambi;  
        private Telerik.WinControls.Themes.TelerikTheme telerikTheme1;  
        private Telerik.WinControls.UI.RadToolStrip rtsGenerazioneEsplosi;  
        private Telerik.WinControls.UI.RadToolStripElement radToolStripElement1;  
        private Telerik.WinControls.UI.RadToolStripItem radToolStripItem1;  
        private Telerik.WinControls.UI.RadImageButtonElement cmdDelete;  
        private Telerik.WinControls.UI.RadImageButtonElement cmdLock;  
        private Telerik.WinControls.UI.RadImageButtonElement cmdUnlock;  
        private Telerik.WinControls.UI.RadContextMenu rcmRicambi;  
        private Telerik.WinControls.UI.RadContextMenuManager radContextMenuManager1;  
        private Telerik.WinControls.UI.RadMenuItem rmiAssociaRicambio;  
    } 


Thanks for any suggestions
   Francesco
Nick
Telerik team
 answered on 12 Feb 2009
1 answer
113 views
hello experts,

My question is the following related to RAD gridview:
 It is possible that i have a full selection on column when I click a certain cell
from that column?
Tks, all the best!!!
Jack
Telerik team
 answered on 12 Feb 2009
3 answers
213 views
When using a sizable RadForm, the Mouse pointer does not change to the double arrow pointer when over the size grip, only when over the border, which is rather inconvenient given that the Office 2007 blue style draws only a very narrow border (1 pixel or so). IMHO the mouse pointer should change when over the Size Grip (and allow re-sizing of the form).

Regards
Erwin


Nick
Telerik team
 answered on 12 Feb 2009
2 answers
155 views
I have created a number of usercontrols that I want to dynamically add to
dockpanels based on user input -

It's all straightforward enough but the users have varying screen sizes
and some of the controls have a fair amount of height.
My problem is I cannot get auto scroll bars when the contents of the docking
panel exceed the boundaries. In your demo apps I see some of the windows
do gain scroll bars when the contents exceed although not all do.

Is there a property / method for the dockpanel that automatically creates scrollbars
based on the contents in the dockpanel ? Or do we have to implement this
ourselves manually ?

Kenneth Jackson
Top achievements
Rank 1
 answered on 11 Feb 2009
9 answers
318 views
I'm trying to figure out a way to have a ContentPanel size itself automatically based on the amount of text in a Label control.  I've tried various ways of automatically sizing the Label in hopes that the ContentPanel would enlarge to accommodate the content, and when that failed I tried programmatically changing the size of the GroupElement to match the size of the label.  None of my attempts has been successful.

Can anyone give me some tips on whether this is possible and if so how to accomplish it?

Thanks,
Josh
Justin
Top achievements
Rank 1
 answered on 11 Feb 2009
11 answers
210 views
Hi is there a way to stop the beeps when tabbing around a gridview?
Nick
Telerik team
 answered on 11 Feb 2009
1 answer
191 views
Hi,
I am using check box column to select row.
In fact when the check box is selected, I am storing the DataBondItem of checked row in an Arraylist.

The constraint here is, at a time only one check box has to be checked.
When the next row is checked. The privious check box should be unchecked.

The above is the total functionality.

I am using, BeginEdit and ActiveEditorValuechanged event to perform the above functionality.

The problem here is I am getting 'Object Reference Error' once in a while.

Can anybody suggest better way to obtain the above functionality ?

Current Code for reference :

 void radGrid_CellBeginEdit(object sender, GridViewCellCancelEventArgs e)
        {
            currentRowIndex = e.RowIndex;
            CurrentRowDataItem = this.radGrid.Rows[e.RowIndex].DataBoundItem;

            try
            {
                CurrentRowDataItem = this.radGrid.Rows[e.RowIndex].DataBoundItem;
                if (radGrid.Columns[e.ColumnIndex] is GridViewCheckBoxColumn)
                {
                    //When the editor is clicked properly
                    if (radGrid.ActiveEditor != null && radGrid.ActiveEditor.Value != null)
                    {
                        //create handler for active Editor
                        radGrid.ActiveEditor.ValueChanged += new EventHandler(ActiveEditor_ValueChanged);
                    }
                }
            }
            catch { }
        }

        void ActiveEditor_ValueChanged(object sender, EventArgs e)
        {
            //Only when the value is not null
            if (radGrid.ActiveEditor != null && radGrid.ActiveEditor.Value != null)
            {
                //remove the handler, because next time when the editor is clicked new handler wil be created
                radGrid.ActiveEditor.ValueChanged -= new EventHandler(ActiveEditor_ValueChanged);
                try
                {
                    //Here check the any row's check box selected in the Grid or not.
                    if (this.selectedRows != null && radGrid.ActiveEditor != null)
                    {
                        //current data item
                        object item = radGrid.CurrentRow.DataBoundItem;

                        if (radGrid.ActiveEditor.Value.ToString().ToLower() == "true")
                        {
                            this.selectedRows.Clear();
                            this.selectedRows.Add(item);

                            if (PreviousRowDataItem == null || previousCheck == -1)
                            {
                                //previousCheck = currentRowIndex;
                                PreviousRowDataItem = this.radGrid.CurrentRow.DataBoundItem;
                            }
                            
                            //set current index of previously selected row. It has to be checked and set because while sorting index may change
                            previousCheck = GetActualCheck(PreviousRowDataItem);

                            //Uncheck the previously selected
                            if (previousCheck != -1)
                            {
                                //set false if its true
                                if (radGrid.Rows[previousCheck].Cells[0].Value.ToString().ToLower() == "true")
                                {
                                    radGrid.Rows[previousCheck].Cells[0].Value = Boolean.FalseString;
                                }
                            }
                            //change the previous rowdata to current dataitem
                            if (currentRowIndex != -1)
                            {
                                PreviousRowDataItem = this.radGrid.CurrentRow.DataBoundItem;
                            }

                            if (OnSelectionChange != null)
                            {
                                OnSelectionChange();
                            }
                        }
                        //if uncheck clear the selected rows
                        else
                        {
                            this.selectedRows.Clear();
                        }

                        //if the Edit is finished, have to call this Default function otherwise the edit should not be commited
                        bool b = radGrid.EndEdit();
                    }
                }
                catch (Exception ex)
                {
                    Nexus.UI.BaseMdiParent.RaiseException(this, ex);
                }
            }
        }
Nick
Telerik team
 answered on 11 Feb 2009
1 answer
126 views
I am using checkbox column in my grid.
At a time only one checkbox can be in selected state.
how can i do that?
Nick
Telerik team
 answered on 11 Feb 2009
1 answer
108 views
I need to have a windows program display a crawl across the bottom of the window. Would RadRotator do this? I need to have the crawl just run without any human intervention.

TIA - Jeff.
Nick
Telerik team
 answered on 11 Feb 2009
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
SplitContainer
Documentation
Map
DesktopAlert
CheckedDropDownList
ProgressBar
MessageBox
TrackBar
Rotator
SpinEditor
CheckedListBox
StatusStrip
CollapsiblePanel
LayoutControl
ShapedForm
SyntaxEditor
Wizard
TextBoxControl
Conversational UI, Chat
DateTimePicker
TabbedForm
CAB Enabling Kit
WaitingBar
GroupBox
DataEntry
ScrollablePanel
ScrollBar
ImageEditor
Tools - VSB, Control Spy, Shape Editor
BrowseEditor
DataFilter
FileDialogs
ColorDialog
Gauges (RadialGauge, LinearGauge, BulletGraph)
ApplicationMenu
RangeSelector
CardView
WebCam
NavigationView
BindingNavigator
RibbonForm
Styling
Barcode
PopupEditor
TaskBoard
Callout
ColorBox
PictureBox
FilterView
Accessibility
VirtualKeyboard
DataLayout
Licensing
ToastNotificationManager
ValidationProvider
CalculatorDropDown
Localization
TimePicker
BreadCrumb
ButtonTextBox
FontDropDownList
BarcodeView
Overlay
Security
LocalizationProvider
Dictionary
TreeMap
StepProgressBar
SplashScreen
Flyout
Separator
SparkLine
ToolbarForm
NotifyIcon
DateOnlyPicker
AI Coding Assistant
Rating
TimeSpanPicker
Calculator
OfficeNavigationBar
TaskbarButton
HeatMap
SlideView
PipsPager
AIPrompt
TaskDialog
TimeOnlyPicker
SpeechToTextButton
+? more
Top users last month
Miljana
Top achievements
Rank 2
Iron
Iron
Joel
Top achievements
Rank 3
Bronze
Bronze
Bronze
Cynthia
Top achievements
Rank 1
John
Top achievements
Rank 1
Iron
Mozart
Top achievements
Rank 1
Iron
Veteran
Want to show your ninja superpower to fellow developers?
Top users last month
Miljana
Top achievements
Rank 2
Iron
Iron
Joel
Top achievements
Rank 3
Bronze
Bronze
Bronze
Cynthia
Top achievements
Rank 1
John
Top achievements
Rank 1
Iron
Mozart
Top achievements
Rank 1
Iron
Veteran
Want to show your ninja superpower to fellow developers?
Want to show your ninja superpower to fellow developers?