How to change casing of line items in EditControl?
EditControl provides option for an end user to customize the Character casing of its contents. Please follow below steps for achieving this.
Step 1: At present there is no property in EditControl, to define Character casing for its contents. So here we are creating Custom control, derived from the EditControl and implemented property to define the Character casing.
Step 2: In EditControl, Lines property will hold its contents i.e. line by line. On the drawing process, each line will be retrieved from this collection and drawn in EditControl UI.
Step 3: Here we are iterating each line and apply the Character casing to it. Then it will be reflected in EditControl with Character case settings.
The following code demonstrates the same.
Code Example: [Xaml]
<!--MenuAdv--> <syncfusion:MenuAdv Grid.Row="0" syncfusion:SkinStorage.VisualStyle="Blend" > <syncfusion:MenuItemAdv Header="Lower case" Click="MenuItemAdv_Click"/> <syncfusion:MenuItemAdv Header="Upper case" Click="MenuItemAdv_Click_1"/> <syncfusion:MenuItemAdv Header="Default" Click="MenuItemAdv_Click_2"/> </syncfusion:MenuAdv> <!--EditControl--> <syncfusion:EditControl x:Name="editcontrol" Grid.Row="1" Focusable="True"/>
//Codes in MainWindow.xaml.cs editcontrol.KeyUp += Editcontrol_KeyUp; editcontrol.TextChanged += Editcontrol_TextChanged; private void Editcontrol_TextChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { if (EditControlExt.GetCharacterCasing(editcontrol) == EditControlExt.CharacterCasing.Upper) { SetUpperCaseText(); } else if (EditControlExt.GetCharacterCasing(editcontrol)==EditControlExt.CharacterCasing.Lower) { SetLowerCaseText(); } } private void Editcontrol_KeyUp(object sender, KeyEventArgs e) { if (EditControlExt.GetCharacterCasing(editcontrol) == EditControlExt.CharacterCasing.Upper) { SetUpperCaseText(); } else if (EditControlExt.GetCharacterCasing(editcontrol)==EditControlExt.CharacterCasing.Lower) { SetLowerCaseText(); } } private void SetUpperCaseText() { for (int i = 0; i <= editcontrol.Lines.Count-1; i++) { editcontrol.Lines[i].Text = editcontrol.Lines[i].Text.ToUpper(); } } private void SetLowerCaseText() { for (int i = 0; i <= editcontrol.Lines.Count-1; i++) { editcontrol.Lines[i].Text = editcontrol.Lines[i].Text.ToLower(); } } //Set Lower case EditControlExt.SetCharacterCasing(editcontrol, EditControlExt.CharacterCasing.Lower); //Set Upper case EditControlExt.SetCharacterCasing(editcontrol, EditControlExt.CharacterCasing.Upper); //Set Default/Normal case EditControlExt.SetCharacterCasing(editcontrol, EditControlExt.CharacterCasing.Normal); //Codes in EditControlExt.cs //CharacterCasing property public class EditControlExt { public enum CharacterCasing { Upper, Lower, Normal, } public static CharacterCasing GetCharacterCasing(DependencyObject obj) { return (CharacterCasing)obj.GetValue(CharacterCasingProperty); } public static void SetCharacterCasing(DependencyObject obj, CharacterCasing value) { obj.SetValue(CharacterCasingProperty, value); } // Using a DependencyProperty as the backing store for CharacterCasing. public static readonly DependencyProperty CharacterCasingProperty = DependencyProperty.RegisterAttached("CharacterCasing", typeof(CharacterCasing), typeof(EditControlExt), new PropertyMetadata(CharacterCasing.Normal)); }
Screenshot
Figure: CharacterCasing is lower.
Figure: CharacterCasing is upper.
Figure: CharacterCasing is Normal.
Sample: EditControlCharacterCasingSample