# TextBox

## Шаблон TextBox <a href="#template" id="template"></a>

Перечень всех возможных тэгов объекта:

```xml
<MyObject Name="" Type="TextBox" Assembly="BaseControls" ChangeForm="">
  <!--Тэги, общие для всех графических объектов-->
  <Top></Top>
  <Bottom></Bottom>
  <Left></Left>
  <Right></Right>
  <Height></Height>
  <Width></Width>
  <FontStyle></FontStyle>
  <ForeColor></ForeColor>
  <BackColor></BackColor>
  <Enabled></Enabled>
  <Visible></Visible>
  <Opacity></Opacity>
  <Hint></Hint>
  <ContextMenu Name="" />
  <Change User="" Source="" ValueSet="" />
  <!--Тэги, специфичные для TextBox-->
  <MaxLength></MaxLength>
  <ReadOnly></ReadOnly>
  <Multiline></Multiline>
  <Password></Password>
  <AllowedSymbols></AllowedSymbols>
  <InputLanguage></InputLanguage>
  <InputCase></InputCase>
  <Mask></Mask>
  <TipText></TipText>
  <TipTextColor></TipTextColor>
  <TextAlign></TextAlign>
  <Text></Text> 
  <Keyboard></Keyboard> 
  <ReturnType></ReturnType> 
  <ReturnCommands></ReturnCommands> 
</MyObject>
```

## Описание TextBox <a href="#description" id="description"></a>

```xml
<MyObject Name="TextBoxName" Type="TextBox" Assembly="BaseControls">
  <!--Тэги, общие для всех графических объектов-->
  <!--Тэги, специфичные для TextBox-->
</MyObject>
```

Значением TextBox считается текст, указанный в поле.

### Получение значения <a href="#get-value" id="get-value"></a>

Для получения указанного в поле текста используется get-проперти [Text](#get_text):

```xml
<Object Name="TextBoxName">
  <Property Name="Text" />
</Object>
```

Рекомендуется использовать сокращенный вариант записи:

```xml
<Object Name="TextBoxName" />
```

### Задание значения <a href="#set-value" id="set-value"></a>

Для задания значения текстовому полю используется set-проперти [Text](#set_text):

```xml
<Object Name="TextBoxName">
  <Property Name="Text">Текст</Property>
</Object>
```

Рекомендуется использовать сокращенный вариант записи:

```xml
<Object Name="TextBoxName">Текст</Object>
```

## Тэги, специфичные для TextBox <a href="#specific-tags" id="specific-tags"></a>

### MaxLength <a href="#max_length" id="max_length"></a>

Задает максимальное число символов, которое разрешается вводить или вставлять в текстовое поле.

Необязательный тэг. Ожидается положительное целочисленное значение.

По умолчанию используется значение 0, показывающее, что ограничения нет.

```xml
<MaxLength>0</MaxLength>
```

### ReadOnly <a href="#read_only" id="read_only"></a>

Указывает, доступно ли текстовое поле только для чтения или для чтения и редактирования.

Необязательный тэг. Ожидается логическое значение.

По умолчанию используется значение False.

```xml
<ReadOnly>False</ReadOnly>
```

### Multiline

Задает значение, показывающее, является ли данный элемент управления многострочным текстовым полем.\
Игнорируется при наличии тэга [`<Mask>`](#mask).

Необязательный тэг. Ожидается логическое значение.

По умолчанию используется значение False.

```xml
<Multiline>False</Multiline>
```

### Password

Признак, разрешающий ввод пароля.\
Пользователь увидит только символы звездочек ( \* ). Игнорируется при наличии тэга [`<Mask>`](#mask).

Необязательный тэг. Ожидается логическое значение.

По умолчанию используется значение False.

```xml
<Password>False</Password>
```

### AllowedSymbols <a href="#allowed_symbols" id="allowed_symbols"></a>

Задает набор символов, которые разрешено вводить в поле.\
Пустая строка соответствует запрету вводить вообще какие-либо символы.

Необязательный тэг. Любое значение будет переведено в текстовое.

Если тэг отсутствует, то можно вводить любые символы.

```xml
<AllowedSymbols>0123456789</AllowedSymbols>
```

### InputLanguage <a href="#input_language" id="input_language"></a>

Задает ограничение на язык вводимых символов.\
Если язык вводимого символа не совпадает с языком, указанным в данном тэге, то этот символ будет трансформирован в символ другого языка, расположенный на этой же клавише клавиатуры.

Необязательный тэг. Ожидается одно из допустимых значений:

<table data-header-hidden><thead><tr><th width="234.41687935952444" align="center"></th><th width="415.40287769784175"></th></tr></thead><tbody><tr><td align="center">Rus</td><td>Русский язык</td></tr><tr><td align="center">Eng</td><td>Английский язык</td></tr><tr><td align="center">None</td><td>Без ограничений по языку</td></tr></tbody></table>

По умолчанию используется значение None.

```xml
<InputLanguage>None</InputLanguage>
```

Например, при значении Rus вводимая последовательность символов "qwerty" будет преобразована в "йцукен".

### InputCase <a href="#input_case" id="input_case"></a>

Задает ограничение на регистр вводимых символов.\
Если регистр вводимого символа не совпадает с регистром, указанном в данном тэге, то этот символ будет трансформирован в указанный регистр.

Необязательный тэг. Ожидается одно из допустимых значений:

<table data-header-hidden><thead><tr><th width="238.67352271687434" align="center"></th><th width="430.0593141797961"></th></tr></thead><tbody><tr><td align="center">Upper</td><td>Верхний регистр</td></tr><tr><td align="center">Lower</td><td>Нижний регистр</td></tr><tr><td align="center">None</td><td>Без ограничений по регистру</td></tr></tbody></table>

По умолчанию используется значение None.

```xml
<InputCase>None</InputCase>
```

### Mask

Маска ввода текстового поля.

Пустая строка соответствует отсутствию маски.

Необязательный тэг. Любое значение будет переведено в текстовое.

```xml
<Mask>AA-00</Mask>
```

Поддерживаемые элементы в выражении для задания маски ввода: `0`,`9`,`#`,`L`,`?`,`&`,`C`,`A`,`a`,`\`. Их описание смотрите по [ссылке](https://docs.microsoft.com/en-us/dotnet/api/system.windows.forms.maskedtextbox.mask?redirectedfrom=MSDN\&view=windowsdesktop-6.0#remarks).

Для задания маски номера телефона используется служебное слово `PHONE`, которое переключает текстовое поле в режим ввода номера телефона. При этом маска выбирается автоматически на основе зоны и кода страны. Подробнее по ссылкам [здесь](https://ru.wikipedia.org/wiki/%D0%A2%D0%B5%D0%BB%D0%B5%D1%84%D0%BE%D0%BD%D0%BD%D1%8B%D0%B5_%D0%BA%D0%BE%D0%B4%D1%8B_%D1%81%D1%82%D1%80%D0%B0%D0%BD) и [здесь](https://ru.wikipedia.org/wiki/%D0%A2%D0%B5%D0%BB%D0%B5%D1%84%D0%BE%D0%BD%D0%BD%D1%8B%D0%B5_%D0%BF%D0%BB%D0%B0%D0%BD%D1%8B_%D0%BD%D1%83%D0%BC%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%B8_%D0%B2_%D1%80%D0%B0%D0%B7%D0%BD%D1%8B%D1%85_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B0%D1%85).

```xml
<Mask>PHONE</Mask>
```

### TipText <a href="#tip_text" id="tip_text"></a>

Задает текст-заполнитель, который будет отображаться в поле, если оно не имеет фокуса и его значение NULL.

Необязательный тэг. Любое значение будет переведено в текстовое.

```xml
<TipText>Текст подсказки</TipText>
```

### TipTextColor <a href="#tip_text_color" id="tip_text_color"></a>

Цвет текста, который будет расположен в поле, если оно не имеет фокуса и его значение NULL.

Необязательный тэг. Ожидается имя одного из цветов, описанных в форме или описание цвета в формате HTML (#rrggbb).&#x20;

Если тэг `<TipTextColor>` отсутствует, то используется цвет по умолчанию заданный в настройках стиля приложения.

```xml
<TipTextColor>TipTextColor</TipTextColor>
```

### TextAlign <a href="#text_align" id="text_align"></a>

Используется, чтобы указать способ выравнивания текста по горизонтали.\
Игнорируется при наличии тэга [`<Mask>`](#mask).

Необязательный тэг.  Ожидается одно из допустимых значений:

<table data-header-hidden><thead><tr><th width="198.926508301592" align="center"></th><th width="355.0302460949434"></th></tr></thead><tbody><tr><td align="center">Left</td><td>Слева</td></tr><tr><td align="center">Center</td><td>По центру</td></tr><tr><td align="center">Right</td><td>Справа</td></tr></tbody></table>

По умолчанию используется значение Left.

```xml
<TextAlign>Left</TextAlign>
```

### Text

Задает значение текстового поля.

Необязательный тэг. Любое значение будет переведено в текстовое.

По умолчанию используется пустая строка.

```xml
<Text>Текст</Text>
```

### Keyboard

Вид клавиатуры при вводе.

Необязательный тэг. Ожидается одно из допустимых значений:

<table data-header-hidden><thead><tr><th width="198.926508301592" align="center"></th><th width="355.0302460949434"></th></tr></thead><tbody><tr><td align="center">Plain</td><td>Клавиатура без флагов, которые определяют регистр букв, проверку орфографии и предложения при вводе</td></tr><tr><td align="center">Chat</td><td>Клавиатура для чата</td></tr><tr><td align="center">Email</td><td>Клавиатура для ввода Email</td></tr><tr><td align="center">Numeric</td><td>Клавиатура ввода числовых значений</td></tr><tr><td align="center">Telephone</td><td>Клавиатура ввода телефона</td></tr><tr><td align="center">Text</td><td>Клавиатура ввода текста</td></tr><tr><td align="center">Url</td><td>Клавиатура ввода ссылки</td></tr><tr><td align="center">Default</td><td>Клавиатура по умолчанию</td></tr></tbody></table>

По умолчанию используется значение Default.

```xml
<Keyboard>Phone</Keyboard>
```

### ReturnType <a href="#return_type" id="return_type"></a>

Вид кнопки завершения ввода у клавиатуры.

Необязательный тэг. Ожидается одно из допустимых значений:

<table data-header-hidden><thead><tr><th width="198.926508301592" align="center"></th><th width="355.0302460949434"></th></tr></thead><tbody><tr><td align="center">Done</td><td>Кнопка "Готово"</td></tr><tr><td align="center">Go</td><td>Кнопка "Вперед"</td></tr><tr><td align="center">Next</td><td>Кнопка "Далее"</td></tr><tr><td align="center">Search</td><td>Кнопка "Поиск"</td></tr><tr><td align="center">Send</td><td>Кнопка отправки</td></tr><tr><td align="center">Default</td><td>Кнопка по умолчанию</td></tr></tbody></table>

По умолчанию используется значение Default.

```xml
<ReturnType>Search</ReturnType>
```

### ReturnCommands <a href="#return_commands" id="return_commands"></a>

Список команд, которые будут выполнены последовательно после нажатия на кнопку завершения ввода клавиатуры.

Необязательный тэг.

```xml
<ReturnCommands>
  <Command Name="" />
</ReturnCommands>
```

## Get-проперти для получения свойств <a href="#get-properties" id="get-properties"></a>

### MaxLength <a href="#get_max_length" id="get_max_length"></a>

Возвращает максимальное число символов, которое разрешается вводить или вставлять в текстовое поле.

```xml
<Object Name="TextBoxName">
  <Property Name="MaxLength" />
</Object>
```

### ReadOnly <a href="#get_read_only" id="get_read_only"></a>

Возвращает значение, определяющее, доступно ли текстовое поле только для чтения или для чтения и редактирования.

```xml
<Object Name="TextBoxName">
  <Property Name="ReadOnly" />
</Object>
```

### Multiline <a href="#get_multiline" id="get_multiline"></a>

Возвращает значение, показывающее, является ли данный элемент управления многострочным текстовым полем.

```xml
<Object Name="TextBoxName">
  <Property Name="Multiline" />
</Object>
```

### Password <a href="#get_password" id="get_password"></a>

Возвращает значение признака ввода пароля в поле.

```xml
<Object Name="TextBoxName">
  <Property Name="Password" />
</Object>
```

### AllowedSymbols <a href="#get_allowed_symbols" id="get_allowed_symbols"></a>

Возвращает набор символов, которые разрешено вводить в поле.

```xml
<Object Name="TextBoxName">
  <Property Name="AllowedSymbols" />
</Object>
```

### InputLanguage <a href="#get_input_language" id="get_input_language"></a>

Возвращает название языка, к которому будут преобразовываться вводимые символы.

```xml
<Object Name="TextBoxName">
  <Property Name="InputLanguage" />
</Object>
```

### InputCase <a href="#get_input_case" id="get_input_case"></a>

Возвращает название регистра, к которому будут преобразовываться вводимые символы.

```xml
<Object Name="TextBoxName">
  <Property Name="InputCase" />
</Object>
```

### Mask <a href="#get_mask" id="get_mask"></a>

Возвращает маску ввода текстового поля.

```xml
<Object Name="TextBoxName">
  <Property Name="Mask" />
</Object>
```

### TipText <a href="#get_tip_text" id="get_tip_text"></a>

Возвращает текст-заполнитель, который будет отображаться в поле, если оно не имеет фокуса и его значение NULL.

```xml
<Object Name="TextBoxName">
  <Property Name="TipText" />
</Object>
```

### TipTextColor <a href="#get_tip_text_color" id="get_tip_text_color"></a>

Возвращает цвет текста, который может быть расположен в объекте, если он не будет иметь фокуса и его значение NULL.

```xml
<Object Name="TextBoxName">
  <Property Name="TipTextColor" />
</Object>
```

### TextAlign <a href="#get_text_align" id="get_text_align"></a>

Возвращает способ выравнивания текста по горизонтали.

```xml
<Object Name="TextBoxName">
  <Property Name="TextAlign" />
</Object>
```

### Text <a href="#get_text" id="get_text"></a>

Возвращает значение текстового поля.

```xml
<Object Name="TextBoxName">
  <Property Name="Text" />
</Object>
```

### WordByNumber <a href="#get_word_by_number" id="get_word_by_number"></a>

Возвращает целое слово с указанным порядковым номером, извлеченное из значения поля.\
Символами-разделителями между словами считаются " ", ",", ".", ";".

Ожидается целочисленное положительное значение.

```xml
<Object Name="TextBoxName">
  <Property Name="WordByNumber">1</Property>
</Object>
```

Например, для строки "слово1 слово2" свойство со значением 2 вернет "слово2".

### Length <a href="#get_length" id="get_length"></a>

Возвращает длину текста, введенного в поле.

```xml
<Object Name="TextBoxName">
  <Property Name="Length" />
</Object>
```

### Keyboard <a href="#get_keyboard" id="get_keyboard"></a>

Возвращает название типа клавиатуры.

```xml
<Object Name="TextBoxName">
  <Property Name="Keyboard" />
</Object>
```

### ReturnType <a href="#get_return_type" id="get_return_type"></a>

Возвращает название типа кнопки возврата клавиатуры.

```xml
<Object Name="TextBoxName">
  <Property Name="ReturnType" />
</Object>
```

## Set-проперти для динамического задания свойств <a href="#set-properties" id="set-properties"></a>

### MaxLength <a href="#set_max_length" id="set_max_length"></a>

Задает максимальное число символов, которое разрешается вводить или вставлять в текстовое поле.

Ожидается положительное целочисленное значение.

```xml
<Object Name="TextBoxName">
  <Property Name="MaxLength">200</Property>
</Object>
```

### ReadOnly <a href="#set_read_only" id="set_read_only"></a>

Задает значение, определяющее, доступно ли поле только для чтения или для чтения и редактирования.

Ожидается логическое значение.

```xml
<Object Name="TextBoxName">
  <Property Name="ReadOnly">True</Property>
</Object>
```

### Multiline <a href="#set_multiline" id="set_multiline"></a>

Задает значение, показывающее, является ли данный элемент управления многострочным текстовым полем.\
Если тэг [`<Mask>`](#mask) присутствует в описании объекта, то любое переданное значение игнорируется.

Ожидается логическое значение.

```xml
<Object Name="TextBoxName">
  <Property Name="Multiline">True</Property>
</Object>
```

### Password <a href="#set_password" id="set_password"></a>

Задает значение признака ввода пароля в поле.\
Если тэг [`<Mask>`](#mask) присутствует в описании объекта, то любое переданное значение игнорируется.

Ожидается логическое значение.

```xml
<Object Name="TextBoxName">
  <Property Name="Password">True</Property>
</Object>
```

### AllowedSymbols <a href="#set_allowed_symbols" id="set_allowed_symbols"></a>

Задает набор символов, которые разрешено вводить в поле.

Любое значение будет переведено в текстовое.

```xml
<Object Name="TextBoxName">
  <Property Name="AllowedSymbols">0123,.</Property>
</Object>
```

### InputLanguage <a href="#set_input_language" id="set_input_language"></a>

Задает правила трансформации языка вводимых символов.

Ожидается одно из допустимых значений, указанных в описании тэга [`<InputLanguage>`](#input_language).

```xml
<Object Name="TextBoxName">
  <Property Name="InputLanguage">Rus</Property>
</Object>
```

### InputCase <a href="#set_input_case" id="set_input_case"></a>

Задает название языка, к которому будут преобразовываться вводимые символы.

Ожидается одно из допустимых значений, указанных в описании тэга [`<InputCase>`](#input_case).

```xml
<Object Name="TextBoxName">
  <Property Name="InputCase">Lower</Property>
</Object>
```

### Mask <a href="#set_mask" id="set_mask"></a>

Задает маску ввода текстового поля.

Любое значение будет переведено в текстовое. Полные правила указания маски ввода указаны в описании тэга [`<Mask>`](#mask).

```xml
<Object Name="TextBoxName">
  <Property Name="Mask">###.##</Property>
</Object>
```

### TipText <a href="#set_tip_text" id="set_tip_text"></a>

Задает текст-заполнитель, который будет отображаться в поле, если оно не имеет фокуса и его значение NULL.

Любое значение будет переведено в текстовое.

```xml
<Object Name="TextBoxName">
  <Property Name="TipText">Текст</Property>
</Object>
```

### TipTextColor <a href="#set_tip_text_color" id="set_tip_text_color"></a>

Задает цвет текста, который может быть расположен в объекте, если он не будет иметь фокуса и его значение NULL.

Ожидается название одного из цветов, объявленных на форме.

```xml
<Object Name="TextBoxName">
  <Property Name="TipTextColor">TipTextColor</Property>
</Object>
```

### TextAlign <a href="#set_text_align" id="set_text_align"></a>

Задает способ выравнивания текста по горизонтали.

Ожидается одно из допустимых значений, указанных в описании тэга [`<TextAlign>`](#text_align).

```xml
<Object Name="LabelName">
  <Property Name="TextAlign">Right</Property>
</Object>
```

### Text <a href="#set_text" id="set_text"></a>

Задает значение текстового поля.

Любое значение будет переведено в текстовое.

```xml
<Object Name="TextBoxName">
  <Property Name="Text">Текст</Property>
</Object>
```

### AppendText <a href="#set_append_text" id="set_append_text"></a>

Дописывает поле заданным текстом и переводит курсор в конец поля.

Любое значение будет переведено в текстовое.

```xml
<Object Name="TextBoxName">
  <Property Name="AppendText">Текст</Property>
</Object>
```

### Keyboard <a href="#set_keyboard" id="set_keyboard"></a>

Задает тип клавиатуры.

Ожидается одно из названий типов клавиатуры, описанных в тэге [`<Keyboard>`](#keyboard).

```xml
<Object Name="TextBoxName">
  <Property Name="Keyboard">Phone</Property>
</Object>
```

### ReturnType <a href="#set_return_type" id="set_return_type"></a>

Задает тип кнопки возврата клавиатуры.

Ожидается одно из названий типов кнопки возврата клавиатуры, описанных в теге [`<ReturnType>`](#returntype).

```xml
<Object Name="TextBoxName">
  <Property Name="ReturnType">Search</Property>
</Object>
```

### InsertAtCursorPosition <a href="#set_insert_at_cursor_position" id="set_insert_at_cursor_position"></a>

Вставляет заданный текст на место курсора и после переводит курсор в конец добавленного текста.\
Если поле не содержит фокуса, то тогда вставляемый текст добавляется в конец строки, и поле получает фокус.

Любое значение будет переведено в текстовое.

```xml
<Object Name="TextBoxName">
  <Property Name="InsertAtCursorPosition">Текст</Property>
</Object>
```
