Eto: рдХреЙрдореНрдмреЛрдмреЙрдХреНрд╕ рдореЗрдВ рдЯреЗрдХреНрд╕реНрдЯ рдкреНрд░реЙрдкрд░реНрдЯреАрдЬ рдФрд░ рдЗрд╡реЗрдВрдЯ рдЬреЛрдбрд╝реЗрдВ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 19 рдордИ 2020  ┬╖  7рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: picoe/Eto

рдореБрдЭреЗ рдЯрд╛рдЗрдк рдХреА рдЧрдИ рдХреБрдВрдЬреА рдХреЗ рдХреЗрд╕ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред

рдХреБрдВрдЬреА рдкреНрд░реЗрд╕ рд╕реНрд╡рдпрдВ OnKeyDown рдХреЗ рд╕рд╛рде рдкрдХрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рддреБрдЪреНрдЫ рд╣реИ рд▓реЗрдХрд┐рди рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЯрд╛рдЗрдк рдХрд┐рдП рдЧрдП рд╡рд░реНрдг рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЯреЗрдХреНрд╕реНрдЯ рдореЗрдВ рдХрд░реНрд╕рд░ рдХреА рд╕реНрдерд┐рддрд┐ рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред

рдШрдЯрдирд╛ OnTextChanged рдХреЛ рдмрд╣реБрдд рджреЗрд░ рд╕реЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрдм рдкрд╛рда рдкрд╣рд▓реЗ рд╣реА рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛред

рд╕рднреА 7 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

TextInput рдИрд╡реЗрдВрдЯ рдЖрдЬрд╝рдорд╛рдПрдВ, рдЬрд┐рд╕реЗ рдЖрдк рд░рджреНрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЯреЗрдХреНрд╕реНрдЯрдмреЙрдХреНрд╕ рдпрд╛ рдЯреЗрдХреНрд╕реНрдЯ рдПрд░рд┐рдпрд╛ рдХреА рдХрд░реНрд╕рд░ рд╕реНрдерд┐рддрд┐ TextBox.Selection рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрд╕рд╛рдиреА рд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред

рдЗрд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк MaskedTextBox рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ IMaskedTextProvider рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдХреЗ рдЬреЛ рдЖрдк рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВ рдЙрд╕реЗ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдФрд░ рд╡рд┐рдХрд▓реНрдк рд╣реИ рдЬреЛ рдЯреЗрдХреНрд╕реНрдЯ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдХреИрд╕реЗ рдЪрд╛рд╣рддреЗ рд╣реИрдВред VariableMaskedTextProvider рдЖрдзрд╛рд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рдЕрдкрдиреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ:

```рд╕реА#
рдХреНрд▓рд╛рд╕ рдЕрдкрд░рдХреЗрд╕рдкреНрд░реЛрд╡рд╛рдЗрдбрд░: рд╡реЗрд░рд┐рдПрдмрд▓рдорд╛рд╕реНрдХреЗрдбрдЯреЗрдХреНрд╕реНрдЯрдкреНрд░реЛрд╡рд╛рдЗрдбрд░
{
рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдУрд╡рд░рд░рд╛рдЗрдб рдмреВрд▓ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░реЗрдВ (рдЪрд╛рд░ рд╡рд░реНрдг, рд░реЗрдлрд░реА int рд╕реНрдерд┐рддрд┐)
{
рд╡рд╛рдкрд╕реА рдЖрдзрд╛рд░ред рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░реЗрдВ (char.ToUpper (рдЪрд░рд┐рддреНрд░), рд░реЗрдлрд░реА рд╕реНрдерд┐рддрд┐);
}

public override bool Replace(char character, ref int position)
{
    base.Replace(char.ToUpper(character), ref position);
}

}

Then to use it:
```c#
new MaskedTextBox(new UpperCaseProvider());

рдЙрдореНрдореАрдж рд╣реИ рдХреА рдпрд╣ рдорджрдж рдХрд░реЗрдЧрд╛ред

рдХрд╛рдо рдЪрд▓ рдЬрд╛рдпреЗрдЧрд╛ред

рдореИрдВрдиреЗ рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХреА рдХреНрдпреЛрдВрдХрд┐ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдХрд╣рддрд╛ рд╣реИ рдХрд┐ TextInput рдореЗрдВ iOS рдХреА рд╕реАрдорд╛рдПрдВ рд╣реИрдВред

рдЗрд╕реЗ рд░рдлреВ рдХрд░реЗрдВред

рдореИрдВ рдЗрд╕реЗ ComboBox рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рд▓реЗрдХрд┐рди рдореИрдВ ControlObject рд╕реЗ Eto.Wpf.Forms.Controls.EtoComboBox (рдЗрд╕рдХреЗ TextBox рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП) рдирд╣реАрдВ рдбрд╛рд▓ рд╕рдХрддрд╛, рдЬреЛ рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ рднреАрдЦ рдорд╛рдБрдЧрддрд╛ рд╣реИ рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рддрд░реАрдХреЗ рд╕реЗ рдЗрд╕реЗ рдХреИрд╕реЗ рдХрд░реЗрдВ рдХрд╛ рдкреНрд░рд╢реНрдиред

рд╣рдореНрдо, рд╣рд╛рдБ ComboBox рдореЗрдВ TextBox рдХреА рддрд░рд╣ рд╕рднреА рдЯреЗрдХреНрд╕реНрдЯ рдИрд╡реЗрдВрдЯ/рдЧреБрдг рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред рдЙрдиреНрд╣реЗрдВ рд╢рд╛рдпрдж рдЬреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдпрджрд┐ рдЖрдк рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕реНрд╡рдд: рдкреВрд░реНрдг рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдПрдХ рдЪреАрдЬ рдЬрд┐рд╕рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реИ рд╡рд╣ рд╣реИ рдЯреЗрдХреНрд╕реНрдЯрдмреЙрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдФрд░ рд╕рд╣реА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╕реАрдорд╛рд╣реАрди рд░реВрдк рджрд┐рдЦрд╛рдирд╛ред рдпрд╣ рдЖрдкрдХреЛ рджрд┐рдЦрд╛рдП рдЧрдП рдЖрдЗрдЯрдо рдФрд░ рдЙрдиреНрд╣реЗрдВ рдХреИрд╕реЗ рджрд┐рдЦрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдореЗрдВ рдЕрдзрд┐рдХ рд▓рдЪреАрд▓рд╛рдкрди рджреЗрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдЕрдВрдд рдореЗрдВ рдереЛрдбрд╝рд╛ рд╕рд╛ рдХрд╛рдо рд╣реИред

рдХрд╛рдо рдЪрд▓ рдЬрд╛рдпреЗрдЧрд╛ред рдзрдиреНрдпрд╡рд╛рджред

рдЕрд░реЗ @LaraSQP , рдореИрдВ

рддреБрдо рд╕рд╣реА рд╣реЛред рдЙрд╕рдХреЗ рд▓рд┐рдП рдорд╛рдлрд╝ рдХрд░рдирд╛ред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

Serg-Norseman picture Serg-Norseman  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

LaraSQP picture LaraSQP  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

ManuelHu picture ManuelHu  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

rothomp3 picture rothomp3  ┬╖  15рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

canton7 picture canton7  ┬╖  22рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ