# 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>
  <Hint></Hint>
  <ContextMenu Name="" />
  <Change User="" Source="" ValueSet="" />
  <!--Тэги, специфичные для TextBox-->
  <MaxLength></MaxLength>
  <ReadOnly></ReadOnly>
  <Multiline></Multiline>
  <Password></Password>
  <ShowPasswordButton></ShowPasswordButton>
  <AllowedSymbols></AllowedSymbols>
  <InputLanguage></InputLanguage>
  <InputCase></InputCase>
  <SelectOnEnter></SelectOnEnter>
  <Mask></Mask>
  <TipText></TipText>
  <TextAlign></TextAlign>
  <Text></Text>
  <ScrollBars></ScrollBars>  
</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>
```

### ShowPasswordButton <a href="#show_password_button" id="show_password_button"></a>

Признак, определяющий, будет ли показана кнопка просмотра введенных символов.\
Игнорируется, если тэг `<Password>` отсутствует.

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

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

<pre class="language-xml"><code class="lang-xml"><strong>&#x3C;ShowPasswordButton>True&#x3C;/ShowPasswordButton>
</strong></code></pre>

Если в тэге `<Password>` явно задано значение False, а в тэге `<ShowPasswordButton>` стоит значение True, то текстовое поле будет работать в режиме ввода пароля с отображением введенных символов.

### 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>
```

### SelectOnEnter <a href="#select_on_enter" id="select_on_enter"></a>

Признак, определяющий, будет ли выделено содержимое поля после получения им фокуса.

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

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

```xml
<SelectOnEnter>False</SelectOnEnter>
```

### Mask

Маска ввода текстового поля.\
При наличии тэга `<Mask>` поля [`<Multiline>`](#multiline), [`<Password>`](#password) и [`<TextAlign>`](#text_align) объекта игнорируются.\
Если тэг `<Mask>` отсутствует, то маска ввода не используется и не сможет в дальнейшем быть установлена.

Пустая строка соответствует отсутствию маски, при этом поля [`<Multiline>`](#multiline), [`<Password>`](#password) и [`<TextAlign>`](#text_align) объекта по-прежнему игнорируются.

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

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

Все поддерживаемые элементы в выражении для задания маски ввода смотрите по [ссылке](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/Телефонные_коды_стран) и [здесь](https://ru.wikipedia.org/wiki/Телефонные_планы_нумерации_в_разных_странах).

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

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

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

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

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

### 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>
```

### ScrollBars <a href="#scroll_bars" id="scroll_bars"></a>

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

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

<table data-header-hidden><thead><tr><th width="199.42423557019467" align="center"></th><th width="353.07623138059114"></th></tr></thead><tbody><tr><td align="center">Vertical</td><td>Вертикальная полоса прокрутки</td></tr><tr><td align="center">Horizontal</td><td>Горизонтальная полоса прокрутки</td></tr><tr><td align="center">Both</td><td>Вертикальная и горизонтальная полосы прокрутки</td></tr><tr><td align="center">None</td><td>Без полос прокрутки</td></tr></tbody></table>

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

```xml
<ScrollBars>Vertical</ScrollBars>
```

### BorderStyle <a href="#border_style" id="border_style"></a>

Задает тип границы элемента.

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

<table data-header-hidden><thead><tr><th width="199.42423557019467" align="center"></th><th width="353.07623138059114"></th></tr></thead><tbody><tr><td align="center">FixedSingle</td><td>Одиночная плоская граница</td></tr><tr><td align="center">Fixed3D</td><td>Одиночная объемная граница</td></tr><tr><td align="center">None</td><td>Нет границы</td></tr></tbody></table>

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

```xml
<BorderStyle>Fixed3D</BorderStyle>
```

## 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>
```

### SelectOnEnter <a href="#get_select_on_enter" id="get_select_on_enter"></a>

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

```xml
<Object Name="TextBoxName">
  <Property Name="SelectOnEnter" />
</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>
```

### 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>
```

### MaskCompleted <a href="#mask_completed" id="mask_completed"></a>

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

```markup
<Object Name="TextBoxName">
  <Property Name="MaskCompleted" />
</Object>
```

#### Пример

Если у текстового поля задана маска вида:

```xml
<Mask>0000#?</Mask>
```

* 0 - обязательный символ, принимает любую цифру от 0 до 9;
* \\# - необязательный символ, принимает любую цифру от 0 до 9 или пробел. Допускаются знаки плюс (+) и минус (-);
* ? - необязательный символ, принимает буквы таблицы ASCII.

Если в поле будут введены все обязательные цифры, то get-проперти MaskCompleted вернет значение true. Если будет отсутствовать хотя бы одна обязательная цифра, то будет возвращено значение false.

### MaskFull <a href="#mask_full" id="mask_full"></a>

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

```markup
<Object Name="TextBoxName">
  <Property Name="MaskFull" />
</Object>
```

#### Пример

Если у текстового поля задана маска вида:

```xml
<Mask>0000#?</Mask>
```

Если в поле будет введена строка вида "1234-A", то get-проперти MaskFull вернет значение true. Если будет отсутствовать хотя бы один любой символ, то будет возвращено значение false.

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

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

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

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

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

### Length

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

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

### ScrollBars <a href="#get_scroll_bars" id="get_scroll_bars"></a>

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

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

### BorderStyle <a href="#get_border_style" id="get_border_style"></a>

Возвращает тип границы элемента.

```xml
<Object Name="TextBoxName">
  <Property Name="BorderStyle" />
</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>
```

### SelectOnEnter <a href="#set_select_on_enter" id="set_select_on_enter"></a>

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

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

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

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

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

Любое значение будет переведено в текстовое. Полные правила указания маски ввода указаны в описании тэга [`<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>
```

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

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

Ожидается одно из допустимых значений, указанных в описании тэга [`<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="#append_text" id="append_text"></a>

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

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

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

### InsertAtCursorPosition

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

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

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

### ScrollBars <a href="#set_scroll_bars" id="set_scroll_bars"></a>

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

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

```xml
<Object Name="TextBoxName">
  <Property Name="ScrollBars">Horizontal</Property>
</Object>
```

### ScrollToEnd

Прокручивает содержимое поля до вертикальных и горизонтальных конечных точек полос прокрутки.

Значение не ожидается.

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

### BorderStyle <a href="#set_border_style" id="set_border_style"></a>

Задает тип границы элемента.

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

```xml
<Object Name="TextBoxName">
  <Property Name="BorderStyle">Fixed3D</Property>
</Object>
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://wfsys.gitbook.io/workflow-forms-syntax/workflow_forms/objects/textbox.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
