diff --git a/_config.yml b/_config.yml index 175deeac2..4780dafc2 100644 --- a/_config.yml +++ b/_config.yml @@ -1960,7 +1960,6 @@ intro_columns: - title: "Data Visualization" items: - "Barcode": "winforms/barcode/overview" "BarcodeView": "barcodeview-overview" "BindingNavigator": "winforms/bindingnavigator" "BulletGraph": "winforms/gauges/bulletgraph" diff --git a/ai-coding-assistant/mcp-server-as-nuget.md b/ai-coding-assistant/mcp-server-as-nuget.md new file mode 100644 index 000000000..55b1f74f1 --- /dev/null +++ b/ai-coding-assistant/mcp-server-as-nuget.md @@ -0,0 +1,181 @@ +--- +title: MCP Server as a NuGet Package +page_title: Telerik WinForms MCP (Model Context Protocol) Server as a NuGet Package +description: Learn how to add and use the Telerik WinForms MCP Server via a NuGet package with the dnx command as a WinForms AI coding assistant and code generator for better developer productivity. The Telerik WinForms MCP server provides proprietary context about Telerik UI for WinForms to AI-powered software. +slug: ai-mcp-server-as-a-nuget +tags: telerik,winforms,ai,ai server,dotnetWF,coding assistant,nuget +position: 3 +--- + +# Telerik WinForms MCP Server (NuGet) + +The Telerik WinForms [MCP (Model Context Protocol) Server](https://modelcontextprotocol.io/introduction) is also available as a NuGet package. This NuGet distribution exposes the same AI Coding Assistant functionality as the npm package. Beginning with .NET 10 it can be executed directly via the `dnx` command. For .NET 8 and .NET 9 (where `dnx` is not available) you can install it as a local dotnet tool and invoke its executable. + +## Prerequisites + +To use the Telerik WinForms MCP server via NuGet, you need: + +| Target Runtime | Required SDK | Invocation Method | Notes | +|----------------|--------------|-------------------|-------| +| .NET 8 / .NET 9 | .NET 8 or .NET 9 SDK | Local dotnet tool (`telerik-winforms-mcp.exe`) | `dnx` not supported; install tool manually | +| .NET 10 | .NET 10 SDK (Preview 6 or newer) | `dnx` dynamic execution | Simplest approach; no prior install step | + +Common requirements: + +* An [MCP-compatible client](https://modelcontextprotocol.io/clients) that supports MCP tools (latest version recommended). +* A WinForms project targeting net8.0-windows, net9.0-windows, or net10.0-windows if you want local project context to be part of AI responses. +* A valid [Telerik license key]({%slug license-key%}). + +## Summary of Installation Approaches + +| Aspect | .NET 8 / 9 | .NET 10 | +|--------|------------|---------| +| Availability of `dnx` | Not available | Available | +| Install Command | `dotnet tool install --tool-path ./.tools Telerik.WinForms.MCP` | None (resolved on demand) | +| Executable Path | `./.tools/telerik-winforms-mcp.exe` | Handled by `dnx` | +| .mcp.json Command | `.\\.tools\\telerik-winforms-mcp.exe` | `dnx` | +| .mcp.json Args | _None_ | `Telerik.WinForms.MCP`, `--yes` | +| Update Version | Re-run tool install with `--version` or `tool update` | Handled by latest package resolved by `dnx` | +| Offline Use | Requires prior tool install | Requires prior NuGet cache warm-up | + +## Server Installation + +### .NET 8 / .NET 9 + +Install the MCP server as a local tool in your solution root (or another chosen path): + +```powershell +dotnet tool install --tool-path ./.tools Telerik.WinForms.MCP +``` + +If updating: + +```powershell +dotnet tool update --tool-path ./.tools Telerik.WinForms.MCP +``` + +This creates the executable at `./.tools/telerik-winforms-mcp.exe`. + +### .NET 10 + +No manual install step is needed. The `dnx` command will download and execute the NuGet package on demand. + +## Server Configuration + +### .NET 8 / .NET 9 Configuration (`.mcp.json`) + +Add a `.mcp.json` file to your solution root (or to `%USERPROFILE%` for global usage): + +```json +{ + "servers": { + "telerik-winforms-assistant": { + "type": "stdio", + "command": ".\\.tools\\telerik-winforms-mcp.exe", + "env": { + "TELERIK_LICENSE_PATH": "THE_PATH_TO_YOUR_LICENSE_FILE" + } + } + } +} +``` + +If you prefer embedding the license string directly: + +```json +"env": { + "TELERIK_LICENSE": "YOUR_LICENSE_KEY" +} +``` + +### .NET 10 Configuration (`.mcp.json`) + +Use these settings when configuring the server in your MCP client: + +| Setting | Value | +|---------|-------| +| Package Name | `Telerik.WinForms.MCP` | +| Type | `stdio` | +| Command | `dnx` | +| Arguments | `Telerik.WinForms.MCP`, `--yes` | +| Server Name | `telerik-winforms-assistant` (customizable) | + +### Workspace-Specific Setup + +Add a `.mcp.json` file to your solution (root) folder. Choose the variant that matches your target .NET runtime: + +#### .NET 8 / .NET 9 Example + +```json +{ + "servers": { + "telerik-winforms-assistant": { + "type": "stdio", + "command": ".\\.tools\\telerik-winforms-mcp.exe", + "env": { + "TELERIK_LICENSE_PATH": "THE_PATH_TO_YOUR_LICENSE_FILE" + } + } + } +} +``` + +#### .NET 10 Example (using `dnx`) + + +```json +{ + "servers": { + "telerik-winforms-assistant": { + "type": "stdio", + "command": "dnx", + "args": ["Telerik.WinForms.MCP", "--yes"], + "env": { + "TELERIK_LICENSE_PATH": "THE_PATH_TO_YOUR_LICENSE_FILE" + } + } + } +} + +``` + +You may substitute `TELERIK_LICENSE` instead of `TELERIK_LICENSE_PATH` (see License Configuration section below for details and recommendations). The `inputs` array is optional and not required for current functionality. + +After saving the file, restart Visual Studio and enable the `telerik-winforms-assistant` tool in the [Copilot Chat window's tool selection dropdown](https://learn.microsoft.com/en-us/visualstudio/ide/mcp-servers?view=vs-2022#configuration-example-with-github-mcp-server). + + +### Global Setup + +To enable the server globally for all projects, add the `.mcp.json` file to your user directory (`%USERPROFILE%`, e.g., `C:\Users\YourName\.mcp.json`). The same distinction applies: use the executable path for .NET 8/9, or `dnx` for .NET 10. + +## License Configuration + +Add your [Telerik license key]({%slug license-key%}) using one of these options in the `env` section. + +__Option 1: License File Path (Recommended)__ + +```json +"env": { + "TELERIK_LICENSE_PATH": "THE_PATH_TO_YOUR_LICENSE_FILE" +} +``` + +The `THE_PATH_TO_YOUR_LICENSE_FILE` should point to the `telerik-license.txt` file, usually in the AppData folder. Often it will look like: + +`"TELERIK_LICENSE_PATH": "%appdata%/Telerik/telerik-license.txt"` + +__Option 2: Direct License Key__ + +```json +"env": { + "TELERIK_LICENSE": "YOUR_LICENSE_KEY_HERE" +} +``` + +> Option 1 is recommended unless you're sharing settings across different systems. Remember to [update your license key]({%slug license-key%}#updating-your-license-key) when necessary. + +## See also + +* [Telerik WinForms GitHub Copilot Extension]({%slug ai-copilot-extension%}) +* [AI Coding Assistant Overview]({%slug ai-overview%}) +* [npm-based Telerik WinForms MCP Server]({%slug ai-mcp-server%}) \ No newline at end of file diff --git a/ai-coding-assistant/prompt-library.md b/ai-coding-assistant/prompt-library.md index fc19e2bce..b4b68bce3 100644 --- a/ai-coding-assistant/prompt-library.md +++ b/ai-coding-assistant/prompt-library.md @@ -4,7 +4,7 @@ page_title: Telerik UI for WinForms Prompt Library description: Explore the collection of prompts that you can use with the Telerik UI for WinForms AI Coding Assistant. slug: ai-prompt-library tags: telerik,winforms,ai,coding assistant,prompt,library -position: 3 +position: 4 --- # Telerik UI for WinForms Prompt Library diff --git a/controls/barcode/barcode-types/1d-barcodes/images/barcode-1d-barcodes001.png b/controls/barcode/barcode-types/1d-barcodes/images/barcode-1d-barcodes001.png deleted file mode 100644 index 4a7e2f178..000000000 Binary files a/controls/barcode/barcode-types/1d-barcodes/images/barcode-1d-barcodes001.png and /dev/null differ diff --git a/controls/barcode/barcode-types/1d-barcodes/images/barcode-1d-barcodes002.png b/controls/barcode/barcode-types/1d-barcodes/images/barcode-1d-barcodes002.png deleted file mode 100644 index ad5783d04..000000000 Binary files a/controls/barcode/barcode-types/1d-barcodes/images/barcode-1d-barcodes002.png and /dev/null differ diff --git a/controls/barcode/barcode-types/1d-barcodes/images/barcode-1d-barcodes003.png b/controls/barcode/barcode-types/1d-barcodes/images/barcode-1d-barcodes003.png deleted file mode 100644 index 9a2d87ef4..000000000 Binary files a/controls/barcode/barcode-types/1d-barcodes/images/barcode-1d-barcodes003.png and /dev/null differ diff --git a/controls/barcode/barcode-types/1d-barcodes/images/barcode-1d-barcodes004.png b/controls/barcode/barcode-types/1d-barcodes/images/barcode-1d-barcodes004.png deleted file mode 100644 index 5b2e17622..000000000 Binary files a/controls/barcode/barcode-types/1d-barcodes/images/barcode-1d-barcodes004.png and /dev/null differ diff --git a/controls/barcode/barcode-types/1d-barcodes/images/barcode-1d-barcodes005.png b/controls/barcode/barcode-types/1d-barcodes/images/barcode-1d-barcodes005.png deleted file mode 100644 index 0b959a623..000000000 Binary files a/controls/barcode/barcode-types/1d-barcodes/images/barcode-1d-barcodes005.png and /dev/null differ diff --git a/controls/barcode/barcode-types/1d-barcodes/images/barcode-1d-barcodes006.png b/controls/barcode/barcode-types/1d-barcodes/images/barcode-1d-barcodes006.png deleted file mode 100644 index 0b959a623..000000000 Binary files a/controls/barcode/barcode-types/1d-barcodes/images/barcode-1d-barcodes006.png and /dev/null differ diff --git a/controls/barcode/barcode-types/1d-barcodes/images/barcode-1d-barcodes007.png b/controls/barcode/barcode-types/1d-barcodes/images/barcode-1d-barcodes007.png deleted file mode 100644 index 273cffb56..000000000 Binary files a/controls/barcode/barcode-types/1d-barcodes/images/barcode-1d-barcodes007.png and /dev/null differ diff --git a/controls/barcode/barcode-types/1d-barcodes/images/barcode-1d-barcodes008.png b/controls/barcode/barcode-types/1d-barcodes/images/barcode-1d-barcodes008.png deleted file mode 100644 index 779d48baf..000000000 Binary files a/controls/barcode/barcode-types/1d-barcodes/images/barcode-1d-barcodes008.png and /dev/null differ diff --git a/controls/barcode/barcode-types/1d-barcodes/images/barcode-1d-barcodes009.png b/controls/barcode/barcode-types/1d-barcodes/images/barcode-1d-barcodes009.png deleted file mode 100644 index 89c0244f5..000000000 Binary files a/controls/barcode/barcode-types/1d-barcodes/images/barcode-1d-barcodes009.png and /dev/null differ diff --git a/controls/barcode/barcode-types/1d-barcodes/images/barcode-1d-barcodes010.png b/controls/barcode/barcode-types/1d-barcodes/images/barcode-1d-barcodes010.png deleted file mode 100644 index 8e5031276..000000000 Binary files a/controls/barcode/barcode-types/1d-barcodes/images/barcode-1d-barcodes010.png and /dev/null differ diff --git a/controls/barcode/barcode-types/1d-barcodes/images/barcode-1d-barcodes011.png b/controls/barcode/barcode-types/1d-barcodes/images/barcode-1d-barcodes011.png deleted file mode 100644 index 920a444b0..000000000 Binary files a/controls/barcode/barcode-types/1d-barcodes/images/barcode-1d-barcodes011.png and /dev/null differ diff --git a/controls/barcode/barcode-types/1d-barcodes/images/barcode-1d-barcodes012.png b/controls/barcode/barcode-types/1d-barcodes/images/barcode-1d-barcodes012.png deleted file mode 100644 index e1ee7c1ea..000000000 Binary files a/controls/barcode/barcode-types/1d-barcodes/images/barcode-1d-barcodes012.png and /dev/null differ diff --git a/controls/barcode/barcode-types/1d-barcodes/images/barcode-1d-barcodes013.png b/controls/barcode/barcode-types/1d-barcodes/images/barcode-1d-barcodes013.png deleted file mode 100644 index 4c6e93229..000000000 Binary files a/controls/barcode/barcode-types/1d-barcodes/images/barcode-1d-barcodes013.png and /dev/null differ diff --git a/controls/barcode/barcode-types/1d-barcodes/images/barcode-1d-barcodes014.png b/controls/barcode/barcode-types/1d-barcodes/images/barcode-1d-barcodes014.png deleted file mode 100644 index a34a14f37..000000000 Binary files a/controls/barcode/barcode-types/1d-barcodes/images/barcode-1d-barcodes014.png and /dev/null differ diff --git a/controls/barcode/barcode-types/1d-barcodes/images/barcode-1d-barcodes015.png b/controls/barcode/barcode-types/1d-barcodes/images/barcode-1d-barcodes015.png deleted file mode 100644 index 29cdeb355..000000000 Binary files a/controls/barcode/barcode-types/1d-barcodes/images/barcode-1d-barcodes015.png and /dev/null differ diff --git a/controls/barcode/barcode-types/1d-barcodes/images/barcode-1d-barcodes016.png b/controls/barcode/barcode-types/1d-barcodes/images/barcode-1d-barcodes016.png deleted file mode 100644 index ae226ff46..000000000 Binary files a/controls/barcode/barcode-types/1d-barcodes/images/barcode-1d-barcodes016.png and /dev/null differ diff --git a/controls/barcode/barcode-types/1d-barcodes/images/barcode-1d-barcodes017.png b/controls/barcode/barcode-types/1d-barcodes/images/barcode-1d-barcodes017.png deleted file mode 100644 index 26422bc57..000000000 Binary files a/controls/barcode/barcode-types/1d-barcodes/images/barcode-1d-barcodes017.png and /dev/null differ diff --git a/controls/barcode/barcode-types/1d-barcodes/images/barcode-1d-barcodes018.png b/controls/barcode/barcode-types/1d-barcodes/images/barcode-1d-barcodes018.png deleted file mode 100644 index 5cc1f7c90..000000000 Binary files a/controls/barcode/barcode-types/1d-barcodes/images/barcode-1d-barcodes018.png and /dev/null differ diff --git a/controls/barcode/barcode-types/1d-barcodes/images/barcode-1d-barcodes019.png b/controls/barcode/barcode-types/1d-barcodes/images/barcode-1d-barcodes019.png deleted file mode 100644 index 83e8d2fb9..000000000 Binary files a/controls/barcode/barcode-types/1d-barcodes/images/barcode-1d-barcodes019.png and /dev/null differ diff --git a/controls/barcode/barcode-types/1d-barcodes/images/barcode-1d-barcodes020.png b/controls/barcode/barcode-types/1d-barcodes/images/barcode-1d-barcodes020.png deleted file mode 100644 index d5aa4e88a..000000000 Binary files a/controls/barcode/barcode-types/1d-barcodes/images/barcode-1d-barcodes020.png and /dev/null differ diff --git a/controls/barcode/barcode-types/1d-barcodes/images/barcode-1d-barcodes021.png b/controls/barcode/barcode-types/1d-barcodes/images/barcode-1d-barcodes021.png deleted file mode 100644 index bc8994ca0..000000000 Binary files a/controls/barcode/barcode-types/1d-barcodes/images/barcode-1d-barcodes021.png and /dev/null differ diff --git a/controls/barcode/barcode-types/1d-barcodes/images/barcode-1d-barcodes022.png b/controls/barcode/barcode-types/1d-barcodes/images/barcode-1d-barcodes022.png deleted file mode 100644 index 1e96e13e1..000000000 Binary files a/controls/barcode/barcode-types/1d-barcodes/images/barcode-1d-barcodes022.png and /dev/null differ diff --git a/controls/barcode/barcode-types/1d-barcodes/images/barcode-1d-barcodes023.png b/controls/barcode/barcode-types/1d-barcodes/images/barcode-1d-barcodes023.png deleted file mode 100644 index bc77f0b06..000000000 Binary files a/controls/barcode/barcode-types/1d-barcodes/images/barcode-1d-barcodes023.png and /dev/null differ diff --git a/controls/barcode/barcode-types/1d-barcodes/specifications.md b/controls/barcode/barcode-types/1d-barcodes/specifications.md deleted file mode 100644 index 1b9faba43..000000000 --- a/controls/barcode/barcode-types/1d-barcodes/specifications.md +++ /dev/null @@ -1,43 +0,0 @@ ---- -title: Specifications -page_title: Specifications - Barcode -description: RadBarcode is a set of components that can be used to create, show and read barcodes. -slug: winforms/barcode/barcode-types/1d-barcodes -tags: barcode, types -published: True -position: 0 ---- - -# 1D Barcode Specifications - -One dimensional (1D) barcodes are made up of lines and spaces of various widths that create specific patterns. - -The following table describes the specific characteristics of the bar codes per type. - -|Barcode type|Image|Description|Character Set|Length|Check Digit| -|----|----|----|----|----|----| -|**Codabar**|![WinForms RadBarcode 1D Codabar](images/barcode-1d-barcodes001.png)|Codabar is a discrete, self-checking symbology that may encode 16 different characters, plus an additional 4 start/stop characters.|0123456789-$:/.+|variable (no fixed length)|Calculated according to Modulo 16| -|**Code 11**|![WinForms RadBarcode 1D 11 CODE](images/barcode-1d-barcodes002.png)|Code11 is a barcode symbology that is discrete and is able to encode the numbers 0 through to 9, the dash symbol (-), and start/stop characters|0123456789-|variable (no fixed length)|Calculated according to Modulo 11| -|**Code 25 Standard**|![WinForms RadBarcode 1D CODE 23 Standard](images/barcode-1d-barcodes003.png)|Standard 2 of 5 is a low-density numeric symbology. The spaces in the barcode exist only to separate the bars themselves. Additionally, a bar may either be wide or narrow, a wide bar generally being 3 times as wide as a narrow bar. The exact size of the spaces is not critical, but is generally the same width as a narrow bar.|0123456789|variable (no fixed length)|Calculated according to Modulo 10| -|**Code 25 Interleaved**|![WinForms RadBarcode 1D Code 25 Interleaved](images/barcode-1d-barcodes004.png)|Interleaved 2 of 5 is a higher-density numeric symbology based upon the Standard 2 of 5 symbology.Interleaved 2 of 5 encodes any even number of numeric characters in the widths of the bars and spaces of the bar code.Unlike Standard 2 of 5, which only encodes information in the width of the bars, Interleaved 2 of 5 encodes data in the width of both the bars and spaces. This allows Interleaved 2 of 5 to achieve a somewhat higher density.The symbology is called "interleaved" because the first numeric data is encoded in the first 5 bars while the second numeric data is encoded in the first 5 spaces that separate the first 5 bars.Thus the first 5 bars and spaces actually encode two characters. This is also why the bar code can only encode an even number of data elements.|0123456789|variable (no fixed length), but even|Calculated according to Modulo 10| -|**Code 39**|![WinForms RadBarcode 1D Code 39](images/barcode-1d-barcodes005.png)|Code39 is a barcode symbology that encodes alphanumeric characters into a series of bars. It is of variable length and accepts uppercase letters, as well as numbers.It includes an optional Mod 43 checksum.|0123456789[Space] ABCDEFGHIJKLMNO PQRSTUVWXYZ-.$/+%|variable (no fixed length)|Calculated according to Modulo 43| -|**Code 39 Extended**|![WinForms RadBarcode 1D Code 39 Extended](images/barcode-1d-barcodes006.png)|Code39Extended is an extended version of code 39, which includes a bigger character set. If there is a requirement to use the Code39 barcode with characters other than numbers and uppercase alphabets, then this is the recommended barcode.|0123456789[Space] ABCDEFGHIJKLMNO PQRSTUVWXYZ!#$%&'() *+,-./:;<=>?@[WinForms RadBarcode \]^_` abcdefghijklmnopqrstuvwxyz{|}|variable (no fixed length)|Calculated according to Modulo 43| -|**Code 93**|![WinForms RadBarcode 1D Code 93](images/barcode-1d-barcodes007.png)|Code93 was designed to complement and improve upon Code 39. Code 93 is similar in that it, like Code 39, can represent the full ASCII character set by using combinations of 2 characters.It differs in that Code 93 is a continuous symbology and produces denser code. It also encodes 47 characters compared to Code 39's 43 characters. |0123456789[WinForms RadBarcode Space]ABCDEFGHIJKL MNOPQRSTUVWXYZ-.$/+%|variable (no fixed length)|Calculated according to Modulo 47| -|**Code 93 Extended**|![WinForms RadBarcode 1D Code 93 Extended](images/barcode-1d-barcodes008.png)|Code93Extended is an extended version of code 93, which includes a bigger character set. Code93Extended can encode full 128 characters ASCII using the four additional characters: ($) (%) (/) (+)|0123456789[Space]ABCDEFGHIJKL MNOPQRSTUVWXYZ -.$/+%!#&'()*,:;<=>?@[WinForms RadBarcode \]^_` abcdefghijklmnopqrstuvwxyz{|}~|variable (no fixed length)|Calculated according to Modulo 47| -|**Code 128**|![WinForms RadBarcode 1D Code 128](images/barcode-1d-barcodes009.png)|Code128 is a barcode symbology that encodes alphanumeric characters into a series of bars. It is of variable length and accepts numbers and upper and lower case characters. It also includes an obligatory MOD 103 checksum. The Code128 is divided into three subsets A, B, and C. There are three separate start codes to indicate which subset will be used.|!"#$%&''()*+,-./ 0123456789:;<=>?@ ABCDEFGHIJKLMNO PQRSTUVWXYZ[\]^_` abcdefghijklmnopqrstuvwxyz{|}Space, Control characters: ASCII 1-31,127|variable (no fixed length)|Calculated according to Modulo 103| -|**Code 128 A**|![WinForms RadBarcode 1D Code 128 A](images/barcode-1d-barcodes010.png)|Code128A supports the standard ASCII symbols, numbers, upper case letters, and control characters, such as tab and new-line.|||| -|**Code 128 B**|![WinForms RadBarcode 1D Code 128 B](images/barcode-1d-barcodes011.png)|Code128B supports standard ASCII symbols, numbers, and upper and lower case letters.|||| -|**Code 128 C**|![WinForms RadBarcode 1D Code 128 C](images/barcode-1d-barcodes012.png)|Code128C supports numbers only.|||| -|**MSI**|![WinForms RadBarcode 1D MSI](images/barcode-1d-barcodes013.png)|MSI(also known as Modified Plessey) is a barcode symbology, a continuous, non-self-checking symbology. It is used primarily for inventory control, and marking storage containers and shelves in warehouse environments. The length of this barcode type is variable.|01234567890|variable (no fixed length)|The MSI barcode uses one of four possible schemes for calculating a check digit: MSImod10(most common), MSImod1010, MSImod11, MSImod1110| -|**EAN 8**|![WinForms RadBarcode 1D EAN 8](images/barcode-1d-barcodes014.png)|EAN8 is a barcode symbology that encodes numbers into a series of bars. It is of fixed length, of 7 digits, and accepts numbers only. It includes a checksum.|01234567890|8|Calculated according to Modulo 10| -|**EAN 13**|![WinForms RadBarcode 1D EAN 13](images/barcode-1d-barcodes015.png)|EAN13 is a barcode symbology that encodes numbers into a series of bars.It is of fixed length, of 13 digits (12 data and 1 check), and accepts numbers. The first digit is always placed outside the symbol; additionally, a right quiet zone indicator (>) is used to indicate Quiet Zones that are necessary for barcode scanners to work properly. It includes a checksum.|01234567890|13|Calculated according to Modulo 10| -|**Postnet**|![WinForms RadBarcode 1D Postnet](images/barcode-1d-barcodes016.png)|Postnet(Postal Numeric Encoding Technique) is a barcode symbology that encodes numbers into a series of bars. It is of variable length and accepts numbers only. It includes a checksum. The POSTNET barcode was replaced by the Intelligent Mail barcode in the fall of 2009.|01234567890|variable (no fixed length)|The check digit is calculated as follows: First, add all digits. The difference of this sum to the next multiple of 10 is the check digit.| -|**Planet**|![WinForms RadBarcode 1D Planet](images/barcode-1d-barcodes022.png)|The Postal Alpha Numeric Encoding Technique (PLANET) barcode was used by the United States Postal Service to identify and track pieces of mail during delivery - the Post Office's "CONFIRM" services. It was fully superseded by Intelligent Mail Barcode by January 28, 2013.|0123456789|A PLANET barcode appears either 12 or 14 digits long.|Calculated according to Modulo 10| -|**Intelligent Mail**|![WinForms RadBarcode 1D Intelligent Mail](images/barcode-1d-barcodes023.png)|The Intelligent Mail Barcode (IM barcode) is a 65-bar barcode for use on mail in the United States. The IM barcode is intended to provide greater information and functionality than its predecessors POSTNET and PLANET. |numeric|20, 25, 29 or 31|CRC check| -|**GS1-128**|![WinForms RadBarcode 1D GS1-128](images/barcode-1d-barcodes017.png)|GS1-128 is a special form of Code 128. It is used for goods and palettes in commerce and industry. The name GS1-128 replaces the old name EAN/UCC 128.|alphanumeric|variable (no fixed length)|Calculated according to Modulo 103| -|**UPC A**|![WinForms RadBarcode 1D UPC A](images/barcode-1d-barcodes018.png)|**UPC A** is a barcode symbology, which consists of 12 digits, one of which is a checksum. This barcode identifies the manufacturer and specific product, so point-of-sale cash register systems can automatically look up the price.|01234567890|12 bzw. 8|Calculated according to Modulo 10| -|**UPC E**|![WinForms RadBarcode 1D UPC E](images/barcode-1d-barcodes019.png)|**UPC E** is a variation of the UPCA symbol that is used for number system 0. By suppressing zeroes, UPCE codes can be printed in a very small space and are used for labeling small items.|01234567890|12 bzw. 8|Calculated according to Modulo 10| -|**UPC Supplement 2**|![WinForms RadBarcode 1D UPC Supplement 2](images/barcode-1d-barcodes020.png)|A two-digit UPC supplementary code. This barcode should only be used with magazines, newspapers, and other such periodicals.|0123456789|2|none| -|**UPC Supplement 5**|![WinForms RadBarcode 1D UPC Supplement 5](images/barcode-1d-barcodes021.png)|A five-digit UPC supplementary code. This barcode is used on books to indicate a suggested retail price.|0123456789|5|none| - - diff --git a/controls/barcode/barcode-types/2d-barcodes/PDF417/images/barcode-2d-barcodes-pdf417-overview001.png b/controls/barcode/barcode-types/2d-barcodes/PDF417/images/barcode-2d-barcodes-pdf417-overview001.png deleted file mode 100644 index 595b6a18a..000000000 Binary files a/controls/barcode/barcode-types/2d-barcodes/PDF417/images/barcode-2d-barcodes-pdf417-overview001.png and /dev/null differ diff --git a/controls/barcode/barcode-types/2d-barcodes/PDF417/images/barcode-2d-barcodes-pdf417-overview002.png b/controls/barcode/barcode-types/2d-barcodes/PDF417/images/barcode-2d-barcodes-pdf417-overview002.png deleted file mode 100644 index 97d3877f0..000000000 Binary files a/controls/barcode/barcode-types/2d-barcodes/PDF417/images/barcode-2d-barcodes-pdf417-overview002.png and /dev/null differ diff --git a/controls/barcode/barcode-types/2d-barcodes/PDF417/images/barcode-2d-barcodes-pdf417-settings001.png b/controls/barcode/barcode-types/2d-barcodes/PDF417/images/barcode-2d-barcodes-pdf417-settings001.png deleted file mode 100644 index 20936069a..000000000 Binary files a/controls/barcode/barcode-types/2d-barcodes/PDF417/images/barcode-2d-barcodes-pdf417-settings001.png and /dev/null differ diff --git a/controls/barcode/barcode-types/2d-barcodes/PDF417/images/barcode-2d-barcodes-pdf417-settings002.png b/controls/barcode/barcode-types/2d-barcodes/PDF417/images/barcode-2d-barcodes-pdf417-settings002.png deleted file mode 100644 index d29cc8da7..000000000 Binary files a/controls/barcode/barcode-types/2d-barcodes/PDF417/images/barcode-2d-barcodes-pdf417-settings002.png and /dev/null differ diff --git a/controls/barcode/barcode-types/2d-barcodes/PDF417/images/barcode-2d-barcodes-pdf417-settings003.png b/controls/barcode/barcode-types/2d-barcodes/PDF417/images/barcode-2d-barcodes-pdf417-settings003.png deleted file mode 100644 index 43456b754..000000000 Binary files a/controls/barcode/barcode-types/2d-barcodes/PDF417/images/barcode-2d-barcodes-pdf417-settings003.png and /dev/null differ diff --git a/controls/barcode/barcode-types/2d-barcodes/PDF417/images/barcode-2d-barcodes-pdf417-settings004.png b/controls/barcode/barcode-types/2d-barcodes/PDF417/images/barcode-2d-barcodes-pdf417-settings004.png deleted file mode 100644 index 5129e8030..000000000 Binary files a/controls/barcode/barcode-types/2d-barcodes/PDF417/images/barcode-2d-barcodes-pdf417-settings004.png and /dev/null differ diff --git a/controls/barcode/barcode-types/2d-barcodes/PDF417/overview.md b/controls/barcode/barcode-types/2d-barcodes/PDF417/overview.md deleted file mode 100644 index 6ede7be07..000000000 --- a/controls/barcode/barcode-types/2d-barcodes/PDF417/overview.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -title: Overview -page_title: PDF417 - Barcode -description: PDF417 is a stacked linear barcode symbol format used in a variety of applications, primarily transport, identification cards, and inventory management. -slug: winforms/barcode/barcode-types/2d-barcodes/pdf417/overview -tags: barcode, pdf417 -published: True -position: 0 ---- - -# WinForms PDF417 Barcode Overview - -PDF417 is a stacked linear barcode symbol format used in a variety of applications, primarily transport, identification cards, and inventory management. PDF stands for Portable Data File. The 417 signifies that each pattern in the code consists of 4 bars and spaces, and that each pattern is 17 units long. The PDF417 symbology was invented by Dr. Ynjiun P. Wang at Symbol Technologies in 1991. (Wang 1993) It is represented by ISO standard 15438. - ->caption Figure 1. PDF417 RadBarcode - -![WinForms RadBarcode PDF47 RadBarcode](images/barcode-2d-barcodes-pdf417-overview001.png) - -## Visual Structure - -The code is divided into rows and columns, which accommodate all the encoded data, the error correction code words, as well as any additional format information, such as start and stop sequences. - -The PDF417 barcode has the following structure: - - ->caption Figure 2. PDF417 RadBarcode's structure - -![WinForms RadBarcode PDF47 RadBarcode's Structure](images/barcode-2d-barcodes-pdf417-overview002.png) - -The Data codewords are located in the middle section of the barcode and include the following sections: - -1. The length indicator cluster (each cluster contains 17 modules), which signifies the total length of the data code words. -2. The actual data, which represents the data entered by the user initially, encoded. -3. The error correction cluster(s), which help the decoder in recovering any data from the code. -4. Padding cluster(s) – since a rectangular matrix is allocated for the data code words, it may become necessary to pad the data, and add one or more clusters, in order to fill any gaps in the available matrix. - -The Left Row Indicator codewords, as well as the Right Row Indicator codewords help the decoder locate each row. Essentially the row indicators represent an encoding of the row number. - -The Start and Stop patterns are present on each row in the PDF417. The signal when the data and row indicators start and end. Each start/stop cluster is identical for each row. - -Additionally, there is a minimum of two modules on each side of the PDF417 barcode, dedicated to the quiet zone. This gives space and separates the barcode from other visual elements on the page, allowing the reader to more reliably detect it. - diff --git a/controls/barcode/barcode-types/2d-barcodes/PDF417/settings.md b/controls/barcode/barcode-types/2d-barcodes/PDF417/settings.md deleted file mode 100644 index f94a3f13b..000000000 --- a/controls/barcode/barcode-types/2d-barcodes/PDF417/settings.md +++ /dev/null @@ -1,73 +0,0 @@ ---- -title: Settings -page_title: PDF417 Settings - Barcode -description: PDF417 is a stacked linear barcode symbol format used in a variety of applications, primarily transport, identification cards, and inventory management. -slug: winforms/barcode/barcode-types/2d-barcodes/pdf417/settings -tags: barcode, pdf417 -published: True -position: 0 ---- - -# Settings - -This article explains the specific PDF417 code settings. - -![WinForms RadBarcode PDF417 Settings](images/barcode-2d-barcodes-pdf417-settings001.png) - ->note Depending on the mode and error correction levels, any invalid characters, entered by the user, as well as any characters, which surpass the maximum number of symbols, which can be accommodated, will be discarded. - -## Encoding Mode - -This is an enumeration, which determines the types of symbols, which will be accepted by the barcode, as well as the algorithm by which they will be encoded internally. The enumeration has the following values: - -* **Auto** - This specifies no particular encoding mode. This means that the barcode control will determine internally how to encode each particular symbol, according to the ISO specification. -* **Byte** - The Byte Compaction mode enables a sequence of 8-bit bytes to be encoded into a sequence of codewords. It is accomplished by a Base 256 to Base 900 conversion, which achieves a compaction ratio of six bytes to five codewords. Characters with ascii codes from 0 to 255 are acceptable. The table below lists all the characters and their values. - - ![WinForms RadBarcode PDF417 Encoding Mode Byte](images/barcode-2d-barcodes-pdf417-settings003.png) - -* **Numeric** - The numeric mode allows encoding of numeric symbols only [0-9]. Any other characters are discarded. -* **Text** - The text mode allows encoding of text characters – upper and lowercase letters, as well as digits, punctuation and some additional characters. The complete character table is listed below: - - ![WinForms RadBarcode PDF417 Encoding Mode Text](images/barcode-2d-barcodes-pdf417-settings004.png) - -## Error Correction Level - -This is an integer value from 0 to 8. This value determines how many error correction clusters will be added to the rendered data. The table below lists the values for each level of error correction: - -![WinForms RadBarcode PDF417 Error Correction Level](images/barcode-2d-barcodes-pdf417-settings002.png) - -## Rows and Columns - -Internally, code PDF417 renders in columns and rows. These rows and columns create a grid, which in turn accommodates all the modules of encoded data. The maximum number of columns in the code is **30**, whereas the maximum number of rows is **90**. Depending on the scenario, this internal behavior may influence the readability of the control. To address this, two properties are exposed - **Rows** and **Columns**. These two properties will allow you to pre-determine the number of rows and columns in the rendered PDF417 code. For example, when you have limited width, you can increase the number of rows. - -One thing to keep in mind is that these properties are related to the data, which needs to be encoded. If there is too much data, more rows/columns will be added. If there is insufficient data, not all rows/columns will be used. - -#### Example - -{{source=..\SamplesCS\Barcode\BarcodeSettings.cs region=PDF417}} -{{source=..\SamplesVB\Barcode\BarcodeSettings.vb region=PDF417}} - -````C# - -Telerik.WinControls.UI.Barcode.Symbology.PDF417 encoder = new Telerik.WinControls.UI.Barcode.Symbology.PDF417(); -encoder.Columns = 3; -encoder.Rows = 3; -encoder.EncodingMode = Telerik.WinControls.UI.Barcode.Symbology.EncodingMode.Auto; -encoder.ECLevel = 2; -this.radBarcode1.Value = "123456Sofia"; -this.radBarcode1.Symbology = encoder; - -```` -````VB.NET -Dim encoder As Telerik.WinControls.UI.Barcode.Symbology.PDF417 = New Telerik.WinControls.UI.Barcode.Symbology.PDF417() -encoder.Columns = 3 -encoder.Rows = 3 -encoder.EncodingMode = Telerik.WinControls.UI.Barcode.Symbology.EncodingMode.Auto -encoder.ECLevel = 2 -Me.radBarcode1.Value = "123456Sofia" -Me.radBarcode1.Symbology = encoder - -```` -{{endregion}} - - diff --git a/controls/barcode/barcode-types/2d-barcodes/QRCode/images/barcode-2d-barcodes-qrcode-overview001.png b/controls/barcode/barcode-types/2d-barcodes/QRCode/images/barcode-2d-barcodes-qrcode-overview001.png deleted file mode 100644 index 9208dfa60..000000000 Binary files a/controls/barcode/barcode-types/2d-barcodes/QRCode/images/barcode-2d-barcodes-qrcode-overview001.png and /dev/null differ diff --git a/controls/barcode/barcode-types/2d-barcodes/QRCode/images/barcode-2d-barcodes-qrcode-overview002.png b/controls/barcode/barcode-types/2d-barcodes/QRCode/images/barcode-2d-barcodes-qrcode-overview002.png deleted file mode 100644 index a75b0fab4..000000000 Binary files a/controls/barcode/barcode-types/2d-barcodes/QRCode/images/barcode-2d-barcodes-qrcode-overview002.png and /dev/null differ diff --git a/controls/barcode/barcode-types/2d-barcodes/QRCode/images/barcode-2d-barcodes-qrcode-overview003.png b/controls/barcode/barcode-types/2d-barcodes/QRCode/images/barcode-2d-barcodes-qrcode-overview003.png deleted file mode 100644 index a56d248e3..000000000 Binary files a/controls/barcode/barcode-types/2d-barcodes/QRCode/images/barcode-2d-barcodes-qrcode-overview003.png and /dev/null differ diff --git a/controls/barcode/barcode-types/2d-barcodes/QRCode/images/barcode-2d-barcodes-qrcode-overview004.png b/controls/barcode/barcode-types/2d-barcodes/QRCode/images/barcode-2d-barcodes-qrcode-overview004.png deleted file mode 100644 index 878dafaa3..000000000 Binary files a/controls/barcode/barcode-types/2d-barcodes/QRCode/images/barcode-2d-barcodes-qrcode-overview004.png and /dev/null differ diff --git a/controls/barcode/barcode-types/2d-barcodes/QRCode/images/barcode-2d-barcodes-qrcode-settings001.png b/controls/barcode/barcode-types/2d-barcodes/QRCode/images/barcode-2d-barcodes-qrcode-settings001.png deleted file mode 100644 index 7e25f6411..000000000 Binary files a/controls/barcode/barcode-types/2d-barcodes/QRCode/images/barcode-2d-barcodes-qrcode-settings001.png and /dev/null differ diff --git a/controls/barcode/barcode-types/2d-barcodes/QRCode/overview.md b/controls/barcode/barcode-types/2d-barcodes/QRCode/overview.md deleted file mode 100644 index 97e4d042b..000000000 --- a/controls/barcode/barcode-types/2d-barcodes/QRCode/overview.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -title: Overview -page_title: QR Code - Barcode -description: QR code (Quick Response Code) is the trademark for a type of matrix barcode. -slug: winforms/barcode/barcode-types/2d-barcodes/qrcode/overview -tags: barcode, qrcode -published: True -position: 0 ---- - -# WinForms QRCode Barcode Overview - -QR code (abbreviated from Quick Response Code) is the trademark for a type of matrix barcode first designed for the automotive industry in Japan. The QR Code system has become popular outside the automotive industry due to its fast readability and greater storage capacity compared to standard UPC barcodes. - -A QR code consists of black modules (square dots) arranged in a square grid on a white background, which can be read by an imaging device (such as a camera) and processed using Reed–Solomon error correction until the image can be appropriately interpreted. The required data are then extracted from patterns present in both horizontal and vertical components of the image. - -A QR code uses four standardized encoding modes (numeric, alphanumeric, byte/binary, and kanji) to efficiently store data. - -## Visual Structure - -There are a total of 40 versions available in the QR code, from 21 by 21 modules to 177 by 177 modules, increasing in steps of 4 modules per side. Naturally, higher versions are used to encode larger amounts of data: - -![WinForms RadBarcode QR 21 to 21](images/barcode-2d-barcodes-qrcode-overview001.png) - -![WinForms RadBarcode QR 177 to 177](images/barcode-2d-barcodes-qrcode-overview002.png) - -Disregarding the data, which consists of the actual encoded data, along with the error correction bits, the structure of the code includes the module groups listed below: - -![WinForms RadBarcode QR Visual Structure](images/barcode-2d-barcodes-qrcode-overview003.png) - -* **Finder Pattern** - The finder pattern is a concentric square of alternating colors, located in all corners of the symbol except the bottom right. They are used by decoders establish orientation. The center is a 3x3 black square and it is surrounded by a one-module-thick white box, which is surrounded by a one-module-thick black box, making the full pattern 7x7 modules. -* **Alignment Pattern** - The alignment pattern is only included in the rendered QR code in version 2 and above. Its purpose is to allow the decoder to scan a skewed image, and convert it to the virtual grid of black and white modules, representing the encoded data. The alignment pattern is made of concentric squares, much like the finder patterns, with the center being a single black module. -* **Timing Pattern** - The timing pattern is an alternating stripe of black and white modules, starting at the lower left corner of the upper right Finder Pattern, going horizontally to the upper left finder pattern and then going vertically to the lower left finder pattern. -* **Format Data** - The format data is information, pertaining to the Masking rule used in the QR Code, along with error correction level. When the data in the QR code is encoded, some of the modules are inverted, in accordance with a predefined rule, in order to improve readability, and ensure that there are no big clusters of same-colored modules. This process is called masking, and the masking information is included in the format data, to alert the decoder that certain modules have been inverted. - -The format data is encoded in 15 bits. One full copy of the format data is located around the upper left finder pattern. A second copy, divided into 7 and 8 bits, is located next to the other two finder patterns. -* **Version Data** - The version data includes information on which version the QR code is. This data is encoded into 18 modules, in a 6 by 3 matrix. Two copies of the version data matrix are included in the QR code - one next to the upper right finder pattern, and the other next to the lower left one. -* **Blank Space** - Additionally, around each QR code, there is an obligatory 4-modules-wide white space area: - -![WinForms RadBarcode winforms/barcode-2d-barcodes-qrcode-overview 004](images/barcode-2d-barcodes-qrcode-overview004.png) - -* **Data** - The data occupies all available modules, not occupied by any of the formatting data segments mentioned above. If the data is smaller than the capacity of the remaining modules, it is padded, in order to ensure that all modules are used. Additionally, the data consists of the actual encoded data, entered by the user, and the error correction bits, calculated on that data. diff --git a/controls/barcode/barcode-types/2d-barcodes/QRCode/settings.md b/controls/barcode/barcode-types/2d-barcodes/QRCode/settings.md deleted file mode 100644 index 32b727151..000000000 --- a/controls/barcode/barcode-types/2d-barcodes/QRCode/settings.md +++ /dev/null @@ -1,79 +0,0 @@ ---- -title: Settings -page_title: QR Code Settings - Barcode -description: QR code (Quick Response Code) is the trademark for a type of matrix barcode. -slug: winforms/barcode/barcode-types/2d-barcodes/qrcode/overview -tags: barcode, qrcode, settings -published: True -position: 0 ---- - -# Settings - -This article explains the specific QR code settings. - -![WinForms RadBarcode QR Settings](images/barcode-2d-barcodes-qrcode-settings001.png) - -## Mode - -There are four values available for this property - *Alphanumeric*, *Numeric*, *Byte* and *Kanji*. Essentially, this determines the sets of acceptable symbols - numbers, characters, etc. - -## Version - -This is an integer value, in the range from 1 to 40, representing the desired barcode version. Usually, higher versions are used do accommodate larger amounts of data. If this property is not set, the encoder internally calculates the lowest possible version and uses it instead. - -## Error Correction Level - -There are four possible values to choose from - L(Low), M(Medium), Q(Quartile), H(High). These values allow for 7%, 15%, 25% and 30% recovery of symbol code words. Additionally, choosing a higher version of error correction dedicates a larger portion of modules for error correction. Thus, given two QR codes with the same sizes, the one with a lower error correction level would be able to accommodate more data. - -## Extended Channel Interpretation (ECI) - -The Extended Channel Interpretation, in short (ECI) allows for encoding of characters of different character sets. For example, choosing an ECI equal to 8859-7 will allow for encoding characters from the Latin/Greek alphabet. Please note, that the ECI setting is only respected when the Mode property of the control is set to *Byte*. - -## FNC1 - -This mode is used for messages containing data formatted either in accordance with the UCC/EAN Application Identifiers standard or in accordance with a specific industry standard previously agreed with AIM International. - -## Application Indicator - -This setting allows for additional data to be applied to the FNC1 data. Please, keep in mind, that this is only applicable with FNC1Mode.*SecondPosition*. Additionally, the acceptable data for this property is in the range {a-z}],{[A-Z} and {00-99}. - -Essentially, both the FNC1 property and the ApplicationIndicator data is applied to the raw data encoded in the control, allowing for special formatting. - -#### Example - -{{source=..\SamplesCS\Barcode\BarcodeSettings.cs region=QRCode}} -{{source=..\SamplesVB\Barcode\BarcodeSettings.vb region=QRCode}} - -````C# - -Telerik.WinControls.UI.Barcode.Symbology.QRCode encoder = new Telerik.WinControls.UI.Barcode.Symbology.QRCode(); -encoder.Version = 0; -encoder.ErrorCorrectionLevel = Telerik.WinControls.UI.Barcode.Symbology.ErrorCorrectionLevel.M; -encoder.ECIMode = Telerik.WinControls.UI.Barcode.Symbology.ECIMode.CP437; -encoder.CodeMode = Telerik.WinControls.UI.Barcode.Symbology.CodeMode.Alphanumeric; -encoder.FNC1Mode = Telerik.WinControls.UI.Barcode.Symbology.FNC1Mode.SecondPosition; -encoder.ApplicationIndicator = "00"; -this.radBarcode1.Symbology = encoder; - -```` -````VB.NET -Dim encoder As Telerik.WinControls.UI.Barcode.Symbology.QRCode = New Telerik.WinControls.UI.Barcode.Symbology.QRCode() -encoder.Version = 0 -encoder.ErrorCorrectionLevel = Telerik.WinControls.UI.Barcode.Symbology.ErrorCorrectionLevel.M -encoder.ECIMode = Telerik.WinControls.UI.Barcode.Symbology.ECIMode.CP437 -encoder.CodeMode = Telerik.WinControls.UI.Barcode.Symbology.CodeMode.Alphanumeric -encoder.FNC1Mode = Telerik.WinControls.UI.Barcode.Symbology.FNC1Mode.SecondPosition -encoder.ApplicationIndicator = "00" -Me.radBarcode1.Symbology = encoder - -```` -{{endregion}} - - - - - - - - diff --git a/controls/barcode/barcode-types/2d-barcodes/SwissQRCode/images/winforms-2d-barcodes-swissqrcode-overview001.png b/controls/barcode/barcode-types/2d-barcodes/SwissQRCode/images/winforms-2d-barcodes-swissqrcode-overview001.png deleted file mode 100644 index 77953b355..000000000 Binary files a/controls/barcode/barcode-types/2d-barcodes/SwissQRCode/images/winforms-2d-barcodes-swissqrcode-overview001.png and /dev/null differ diff --git a/controls/barcode/barcode-types/2d-barcodes/SwissQRCode/images/winforms-2d-barcodes-swissqrcode-overview002.png b/controls/barcode/barcode-types/2d-barcodes/SwissQRCode/images/winforms-2d-barcodes-swissqrcode-overview002.png deleted file mode 100644 index b725df81d..000000000 Binary files a/controls/barcode/barcode-types/2d-barcodes/SwissQRCode/images/winforms-2d-barcodes-swissqrcode-overview002.png and /dev/null differ diff --git a/controls/barcode/barcode-types/2d-barcodes/SwissQRCode/overview.md b/controls/barcode/barcode-types/2d-barcodes/SwissQRCode/overview.md deleted file mode 100644 index a8a581dad..000000000 --- a/controls/barcode/barcode-types/2d-barcodes/SwissQRCode/overview.md +++ /dev/null @@ -1,133 +0,0 @@ ---- -title: Overview -page_title: Overview - WinForms Swiss QR Barcode Control -description: WinForms Swiss QR Barcode encodes all the information necessary for a payment in specific format and structure. -slug: winforms-2d-barcodes-swissqrcode-overview -tags: barcode, qrcode -published: True -position: 0 ---- - -# WinForms SwissQR Barcode Overview - -The QR-bill makes issuing and paying invoices simpler, and is being introduced throughout Switzerland to modernize payment transactions. Its most striking feature is the Swiss QR code, which contains all the payment information in a digital format, which can be read using a smart phone or a slip scanner. - ->caption Figure 1: A Swiss QR-bill - -![WinForms RadBarcode A Swiss QR-bill](images/winforms-2d-barcodes-swissqrcode-overview001.png) - -The Swiss QR Code encodes all the information necessary for a payment in specific format and structure. Along with the printed information, the Swiss QR Code forms the payment part of the QR-bill. The allowed currencies for payments are CHF and EUR. The QR-Bill also guarantees you compliance with the regulatory requirements arising from the revised Anti-Money Laundering Ordinance. - -## Requirements - -The Swiss QR Code symbol requires an error correction level "M", which means a redundancy or assurance of around 15%. - -In addition, the measurements of the Swiss QR Code for printing must always be 46 x 46 mm (without surrounding quiet space) regardless of the Swiss QR Code version. Depending on the printer resolution, the Swiss QR Code produced might require size adjustments. - -## Generating a Swiss Barcode - -To generate a Swiss Barcode using Telerik UI for WinForms, you need to first set the **Symbology** of the barcode to **SwissQRCode**. - -#### Example 1: Setting the SwissQRCode symbology - -{{source=..\SamplesCS\Barcode\BarcodeSettings.cs region=SetSwissQRCode}} -{{source=..\SamplesVB\Barcode\BarcodeSettings.vb region=SetSwissQRCode}} - -````C# - -SwissQRCode symbology = new SwissQRCode(); -symbology.Module = 4; -symbology.SizingMode = Telerik.WinForms.UI.Barcode.SizingMode.Manual; -this.radBarcode1.Symbology = symbology; - -```` -````VB.NET -Dim symbology As SwissQRCode = New SwissQRCode() -symbology.[Module] = 4 -symbology.SizingMode = Telerik.WinForms.UI.Barcode.SizingMode.Manual -Me.radBarcode1.Symbology = symbology - -```` -{{endregion}} - -The Swiss QR code standard mandates that the input provided for the generation of the barcode is strictly formatted. Both, validating and generating this input, are complex processes and to facilitate them you can use the **SwissQRCodeValueStringBuilder** helper class. Its purpose is to hold the information needed for a **SwissQRCode** in a type-safe manner, to validate this information and to generate the input. Through its constructor, you need to set the following properties: - -* **Iban**: The IBAN of the Account/Payable to. - -* **Currency**: The currency of the payment - CHF or EUR. - -* **Creditor**: The information of the contact that receives the payment. - -* **Reference**: The reference information for the payment. - -* **AdditionalInformation**: The additional information for the payment. - -* **Debtor**: The information of the contact that makes the payment. - -* **Amount**: The amount of the payment. - -* **AlternativeProcedure**: The alternative procedures for the payment. - -#### Example 2: Creating the SwissQRCodeValueStringBuilder - -{{source=..\SamplesCS\Barcode\BarcodeSettings.cs region=SwissQRCodeValueStringBuilder}} -{{source=..\SamplesVB\Barcode\BarcodeSettings.vb region=SwissQRCodeValueStringBuilder}} - -````C# - Telerik.WinForms.UI.Barcode.SwissQRCodeValueStringBuilder qrCodeValue = new SwissQRCodeValueStringBuilder( - new Iban("CH4431999123000889012", IbanType.QRIBAN), - SwissQRCodeCurrency.EUR, - new Contact("Max Muster & Söhne", - new StructuredAddress("CH", "8000", "Seldwyla", "Musterstrasse", "123")), - new Reference(ReferenceType.QRR, "210000000003139471430009017"), - new AdditionalInformation("Order from 15.03.2021", "//S1/10/1234/11/201021/30/102673386/32/7.7/40/0:30"), - new Contact("Simon Muster", new StructuredAddress("CH", "8000", "Seldwyla", "Musterstrasse", "1")), - (decimal)1949.75, - new AlternativeProcedure("Name AV1: UV;UltraPay005;12345", "Name AV2: XY;XYService;54321")); - - -```` -````VB.NET - Dim qrCodeValue As Telerik.WinForms.UI.Barcode.SwissQRCodeValueStringBuilder = New SwissQRCodeValueStringBuilder( - New Iban("CH4431999123000889012", IbanType.QRIBAN), - SwissQRCodeCurrency.EUR, - New Contact("Max Muster & Söhne", New StructuredAddress("CH", "8000", "Seldwyla", "Musterstrasse", "123")), - New Reference(ReferenceType.QRR, "210000000003139471430009017"), - New AdditionalInformation("Order from 15.03.2021", "//S1/10/1234/11/201021/30/102673386/32/7.7/40/0:30"), - New Contact("Simon Muster", New StructuredAddress("CH", "8000", "Seldwyla", "Musterstrasse", "1")), - CDec(1949.75), New AlternativeProcedure("Name AV1: UV;UltraPay005;12345", "Name AV2: XY;XYService;54321")) - -```` -{{endregion}} - -Once you've set up the **SwissQRCodeValueStringBuilder** you can call its **Validate** method which validates all its fields and the relations between them. The method returns a string which contains the accumulated errors. If there are no errors - **null** is returned. In this case, you can call the **BuildValue** method of the string builder which will build the string value to be provided to the **RadBarcode**. - -#### Example 3: Validate and build barcode value - -{{source=..\SamplesCS\Barcode\BarcodeSettings.cs region=ValidateSwissQR}} -{{source=..\SamplesVB\Barcode\BarcodeSettings.vb region=ValidateSwissQR}} - -````C# - string errors = qrCodeValue.Validate(); - - if (string.IsNullOrEmpty(errors)) - { - this.radBarcode1.Value = qrCodeValue.BuildValue(); - } - -```` -````VB.NET - Dim errors As String = qrCodeValue.Validate() - - If String.IsNullOrEmpty(errors) Then - Me.radBarcode1.Value = qrCodeValue.BuildValue() - End If - -```` -{{endregion}} - -Invoking the code from **Example 3** will generate the following result: - -![WinForms RadBarcode A SwissQRCode Validate](images/winforms-2d-barcodes-swissqrcode-overview002.png) - - diff --git a/controls/barcode/barcode-types/2d-barcodes/datamatrix/images/2d-barcodes-datamatrix-overview001.png b/controls/barcode/barcode-types/2d-barcodes/datamatrix/images/2d-barcodes-datamatrix-overview001.png deleted file mode 100644 index a6241d92d..000000000 Binary files a/controls/barcode/barcode-types/2d-barcodes/datamatrix/images/2d-barcodes-datamatrix-overview001.png and /dev/null differ diff --git a/controls/barcode/barcode-types/2d-barcodes/datamatrix/overview.md b/controls/barcode/barcode-types/2d-barcodes/datamatrix/overview.md deleted file mode 100644 index 57ea98560..000000000 --- a/controls/barcode/barcode-types/2d-barcodes/datamatrix/overview.md +++ /dev/null @@ -1,43 +0,0 @@ ---- -title: Overview -page_title: Data Matrix - Barcode -description: Data Matrix barcode is a two-dimensional type of code used widely in industry for marking small parts and items due to its high data density and reliability. -slug: 2d-barcodes-datamatrix-overview -tags: barcode, datamatrix -published: True -position: 0 ---- - -# WinForms Data Matrix Barcode Overview - -Data Matrix barcode is a two-dimensional type of code used widely in industry for marking small parts and items due to its high data density and reliability. Data Matrix code consists of dark and light square cells that form a matrix. The produced code can be square or rectangular and can have size up to 144x144 for square codes or 16x48 for rectangular codes. To provide better readability, the Data Matrix code includes error correction algorithm, allowing to reconstruct up to 30% of damaged code image. - ->caption Figure 1. Data Matrix Barcode Structure - -![WinForms RadBarcode Data Matrix Barcode Structure](images/2d-barcodes-datamatrix-overview001.png) - -* **Finder pattern** - the L-shaped lines at the bottom and left of the code are called "finder pattern". It is used by the readers for orientation, adjustment and to correct distortion. - -* **Module size** - the smallest cell in the code graphical representation. The module size is recommended to be at least 2x2 printed dots for better readability. - -* **Timing pattern** - the lines at the top and right of the code are called "timing pattern". It provides information about the barcode size. - -* **Data area** - the area surrounded by the finding pattern and timing pattern. Contains the modules that encode the barcode contents. - -The size of the Data Matrix code depends on module size, length and type of its contents. The contents type determines if the encoded value contains only numerical characters or includes ASCII or Unicode characters. The following table shows the correlation between the content type, content length and matrix size: - -|COUNT OF NUMERICAL CHARACTERS|COUNT OF ASCII CHARACTERS|MATRIX SIZE| -|----|----|----| -|6|3|10x10| -|10|6|12x12| -|16|10|14x14| -|24|16|16x16| -|36|25|18x18| -|44|31|20x20| -|60|43|22x22| -|72|52|24x24| -|88|64|26x26| -|124|91|32x32| - - - diff --git a/controls/barcode/barcode-types/2d-barcodes/datamatrix/settings.md b/controls/barcode/barcode-types/2d-barcodes/datamatrix/settings.md deleted file mode 100644 index 6c53e0dad..000000000 --- a/controls/barcode/barcode-types/2d-barcodes/datamatrix/settings.md +++ /dev/null @@ -1,70 +0,0 @@ ---- -title: Settings -page_title: Settings - Barcode -description: Data Matrix barcode is a two-dimensional type of code used widely in industry for marking small parts and items due to its high data density and reliability. -slug: 2d-barcodes-datamatrix-settings -tags: barcode, datamatrix -published: True -position: 1 ---- - -# Settings - -This article explains the specific Data Matrix code settings. - -## Encodation - -The encodation determines the type of contents encoded by the Data Matrix barcode. Choosing a proper encodation imposes validation rules, but reduces the barcode size and improves its readability. - -The following table shows the supported encodations and provides information about their restrictions and data storing requirements: - -* **ASCII** - allowed characters include double digit numerics and all values from the ASCII table. The double digit numerics use 4 bits. The ASCII values in the 0-127 range use 8 bits. The ASCII values in 128-255 range use 16 bits. - -* **C40** - Used primarily for upper-case alphanumerics. The upper-case alphanumeric characters use 5.33 bits. The lower-case and special characters use 10.66 bits. - -* **Text** - Used primarily for lower-case alphanumerics. The lower-case alphanumeric characters use 5.33 bits. The upper-case and special characters use 10.66 bits. - -* **X12** - Uses the characters from [ANSI X12 EDI](https://edi3.dicentral.com/ansi-x12) data set. Each character takes 5.33 bits. - -* **EDIFACT** - Used to encode ASCII values in the 32-94 range. Each character takes 6 bits. - -* **Base256** - Used to encode characters in the whole ASCII range. Each character takes 8 bits. - -* **AsciiGS1** - Used to encode FNC1 characters in the ASCII range - -## SymbolSize - -Sets the symbol size and shape of the generated barcode. It can be automatically determined using **SquareAuto** or **RectangleAuto**, or specific like **Square32x32** or **Rectangle16x48**. - -## Encoding - -Determines character encoding used to encode the barcode contents. By default it is set to UTF-8, which uses more bits per character and may increase the size of the barcode image. - -## Example - -{{source=..\SamplesCS\Barcode\BarcodeSettings.cs region=DataMatrix}} -{{source=..\SamplesVB\Barcode\BarcodeSettings.vb region=DataMatrix}} - -````C# -Telerik.WinControls.UI.Barcode.Symbology.DataMatrix encoder = new DataMatrix(); -encoder.Encodation = Telerik.WinControls.UI.Barcode.Symbology.Encodation.Ascii; -encoder.SymbolSize = Telerik.WinControls.UI.Barcode.Symbology.SymbolSize.SquareAuto; -encoder.Encoding = Encoding.UTF8; -this.radBarcode1.Symbology = encoder; - - -```` -````VB.NET -Dim encoder As Telerik.WinControls.UI.Barcode.Symbology.DataMatrix = New DataMatrix() -encoder.Encodation = Telerik.WinControls.UI.Barcode.Symbology.Encodation.Ascii -encoder.SymbolSize = Telerik.WinControls.UI.Barcode.Symbology.SymbolSize.SquareAuto -encoder.Encoding = System.Text.Encoding.UTF8 -Me.radBarcode1.Symbology = encoder - - -```` -{{endregion}} - -# See Also - -* [Encoding](https://docs.microsoft.com/en-us/dotnet/api/system.text.encoding?view=netcore-3.1) diff --git a/controls/barcode/barcode-types/supported-types.md b/controls/barcode/barcode-types/supported-types.md deleted file mode 100644 index ec7f6ebc4..000000000 --- a/controls/barcode/barcode-types/supported-types.md +++ /dev/null @@ -1,49 +0,0 @@ ---- -title: Supported Types -page_title: Supported Types - Barcode -description: RadBarcode is a set of components that can be used to create, show and read barcodes. -slug: winforms/barcode/barcode-types/supported-types -tags: barcode, types -published: True -position: 0 ---- - -# Supported Types - -There are two types of barcodes according to their dimensions: - -## Linear (1D) barcodes - -The linear (one dimensional) barcodes are made up of lines and spaces of various widths that create specific patterns. Currently, **RadBarcode** supports the following one dimensional barcode types: - -|Barcode|Description| -|----|----| -|**Codabar**|(aka Ames Code/USD-4/NW-7/2 of 7 Code): Used in libraries and blood banks| -|**Code 11**|(USD-8): Used to identify telecommunications equipment| -|**Code 25 Standard**|Used in airline ticket marking, photofinishing| -|**Code 25 Interleaved**|Used in warehouse, industrial applications| -|**Code 39**|(aka USD-3, 3 of 9): U.S. Government and military use, required for DoD applications| -|**Code 39 Extended**|(aka USD-3, 3 of 9): U.S. Government and military use, required for DoD applications, supports full ASCII| -|**Code 93**|(aka USS-93): Compressed form of Code 39| -|**Code 93 Extended**|(aka USS-93): Compressed form of Code 39, supports full ASCII| -|**Code 128**|Very dense code, used extensively worldwide| -|**Code 128 A**|Subset of Code 128 *(more info in 1D Barcodes)| -|**Code 128 B**|Subset of Code 128 *(more info in 1D Barcodes)| -|**Code 128 C**|Subset of Code 128 *(more info in 1D Barcodes)| -|**MSI**|Variation of Plessey code, with similar applications| -|**EAN 8**|Short version of EAN-13, 8 characters| -|**EAN 13**|Used with consumer products internationally, 13 characters| -|**GS1-128**|Formerly known as UCC-128 and EAN-128. Used to encode shipping/product information *(more info in 1D Barcodes)| -|**Postnet**|Printed by U.S. Post Office on envelopes| -|**Planet** |The Postal Alpha Numeric Encoding Technique (PLANET) barcode was used by the United States Postal Service to identify and track pieces of mail during delivery - the Post Office's "CONFIRM" services. It was fully superseded by Intelligent Mail Barcode by January 28, 2013.| -|**Intelligent Mail**|The Intelligent Mail Barcode (IM barcode) is a 65-bar barcode for use on mail in the United States. The IM barcode is intended to provide greater information and functionality than its predecessors POSTNET and PLANET.| -|**UPC A**|Used with consumer products in U.S., 12 characters| -|**UPC E**|Short version of UPC symbol, 6 characters| -|**UPC Supplement 2**|Used to indicate magazines and newspaper issue numbers| -|**UPC Supplement 5**|Used to mark suggested retail price of books| - -## Matrix (2D) barcodes - -The matrix code is a two-dimensional way for representing information. It can also be referred to as a 2D barcode or simply a 2D code. It is similar to the linear (one dimensional) barcode, but can represent more data per unit area. - -Currently, **RadBarcode** supports *DataMatrix*, *QR Code* and *PDF417* matrix barcode types. diff --git a/controls/barcode/design-time.md b/controls/barcode/design-time.md deleted file mode 100644 index 6002ad81b..000000000 --- a/controls/barcode/design-time.md +++ /dev/null @@ -1,44 +0,0 @@ ---- -title: Design Time -page_title: Design Time - WinForms Barcode Control -description: WinForms Barcode is a set of components that can be used to create, show and read barcodes. Learn how to use its Design Time feature. -slug: winforms/barcode/design-time -tags: barcode, designtime -published: True -position: 1 ---- - -# Design Time - -## Smart Tag - -Select **RadBarcode** and click the small arrow on the top right position in order to open the __Smart Tag__. The __Smart Tag__ for **RadBarcode** lets you quickly access common tasks involved with accessing **RadBarcode** elements. - ->caption Figure 1: Smart Tag - -![WinForms RadBarcode Smart Tag](images/barcode-design-time001.png) - -**Common Tasks:** - -* **New Theme Manager:** adds a new [RadThemeManager]({%slug winforms/tools/visual-style-builder/adding-custom-themes-to-your-application/adding-radthememanager-to-a-form%}) component to the form. - -* **Edit UI Elements:** allows setting properties at multiple levels of the class hierarchy. - -* **Theme Name:** allows you to set the theme for the control. - -**Common Barcode Settings:** - -* **Value:** gets or sets the value that will be converted into a barcode. - -* **Symbology:** gets or sets the symbology that will be used to convert the value of this element into a visual barcode representation. - -**QRcode Tasks:** - this section will be displayed only when the *QRcode* symbology is selected. - -**PDF417 Tasks:** - this section will be displayed only when the *PDF417* symbology is selected. - -**Symbology Tasks:** - allows you to set the text/line alignment for the linear barcodes. - -**Learning Center:** Navigate to the Telerik help, code library projects or support forum. - -**Search:** Search in the forum for a given string. - diff --git a/controls/barcode/getting-started.md b/controls/barcode/getting-started.md deleted file mode 100644 index b1ef618f4..000000000 --- a/controls/barcode/getting-started.md +++ /dev/null @@ -1,43 +0,0 @@ ---- -title: Getting Started -page_title: Getting Started - WinForms Barcode Control -description: WinForms Barcode is a set of components that can be used to create, show and read barcodes. Learn how to get started with it. -slug: winforms/barcode/getting-started -tags: barcode, getting started -published: True -position: 2 ---- - -# Getting Started with WinForms Barcode - -1. To start using **RadBarcode** just drag it from the toolbox and drop it at the form. - - ![WinForms RadBarcode winforms/barcode-getting-started 001](images/barcode-getting-started001.png) - - The default **Symbology** is *QRCode* and the initial value is *12345*. - - ![WinForms RadBarcode winforms/barcode-getting-started 002](images/barcode-getting-started002.png) - -1. After choosing the desired **Symbology** you can further adjust its specific settings if available: - - ![WinForms RadBarcode winforms/barcode-getting-started 003](images/barcode-getting-started003.png) - -1. The value which is encoded is set through the **Value** property. - -1. The width (size) of the bar-code elements is auto calculated from the size of the control. - - ![WinForms RadBarcode winforms/barcode-getting-started 004](images/barcode-getting-started004.gif) - -1. By default, **RadBarcode** uses black color to draw the bar-code elements. You can customize it by the **ForeColor** property. - - - -## Telerik UI for WinForms Learning Resources -* [Getting Started with Telerik UI for WinForms Components](https://docs.telerik.com/devtools/winforms/getting-started/first-steps) -* [Telerik UI for WinForms Setup](https://docs.telerik.com/devtools/winforms/installation-and-upgrades/installing-on-your-computer) -* [Telerik UI for WinForms Application Modernization](https://docs.telerik.com/devtools/winforms/winforms-converter/overview) -* [Telerik UI for WinForms Visual Studio Templates](https://docs.telerik.com/devtools/winforms/visual-studio-integration/visual-studio-templates) -* [Deploy Telerik UI for WinForms Applications](https://docs.telerik.com/devtools/winforms/deployment-and-distribution/application-deployment) -* [Telerik UI for WinForms Virtual Classroom(Training Courses for Registered Users)](https://learn.telerik.com/learn/course/external/view/elearning/17/telerik-ui-for-winforms) -* [Telerik UI for WinForms License Agreement)](https://www.telerik.com/purchase/license-agreement/winforms-dlw-s) - diff --git a/controls/barcode/how-to/export-to-image.md b/controls/barcode/how-to/export-to-image.md deleted file mode 100644 index 46fbf60ad..000000000 --- a/controls/barcode/how-to/export-to-image.md +++ /dev/null @@ -1,69 +0,0 @@ ---- -title: Export to Image -page_title: Export to Image - Barcode -description: RadBarcode is a set of components that can be used to create, show and read barcodes. -slug: winforms/barcode/how-to/export-to-image -tags: barcode -published: True -position: 0 ---- - -# Export to Image - - **RadBarcode** supports export to image functionality. - -You can export the **RadBarcode** content by using one of the following overloads of the **ExportToImage** method: - -* **ExportToImage()** - Exports the barcode with the current dimentions of the control. -ExportToImage(int width, int height) Layouts the barcode using the provided dimentions and exports it to an image. - -* **ExportToImage(Stream stream, Size size)** - Layouts the barcode using the provided size and exports it to the specified stream. - -* **ExportToImage(string filePath, Size size)** - Layouts the barcode using the provided size and exports it to the specified file location. - -* **ExportToImage(Stream stream, Size size, ImageFormat imageFormat)** - Layouts the barcode using the provided size and exports it to the specified stream in the specified image format. - -* **ExportToImage(string filePath, Size size, ImageFormat imageFormat)** - Layouts the barcode using the provided size and exports it to the specified file location in the specified image format. - -#### Export to Image - -{{source=..\SamplesCS\Barcode\BarcodeSettings.cs region=ExportToImage}} -{{source=..\SamplesVB\Barcode\BarcodeSettings.vb region=ExportToImage}} - -````C# - -using (SaveFileDialog saveFileDialog = new SaveFileDialog()) -{ - saveFileDialog.Filter = "Png (*.png)|*.png"; - saveFileDialog.FileName = "QRCode"; - if (saveFileDialog.ShowDialog() == DialogResult.OK) - { - Image img = this.radBarcode1.ExportToImage(); - img.Save(saveFileDialog.FileName, System.Drawing.Imaging.ImageFormat.Png); - } -} - -```` -````VB.NET -Using saveFileDialog As SaveFileDialog = New SaveFileDialog() - saveFileDialog.Filter = "Png (*.png)|*.png" - saveFileDialog.FileName = "QRCode" - If saveFileDialog.ShowDialog() = DialogResult.OK Then - Dim img As Image = Me.radBarcode1.ExportToImage() - img.Save(saveFileDialog.FileName, System.Drawing.Imaging.ImageFormat.Png) - End If -End Using -End Sub - -```` - -{{endregion}} - ->caption Figure 1: Exported Barcode - -![WinForms RadBarcode Exported Barcode](images/barcode-how-to-export-to-image001.png) - -If you need to export the barcode data to a document, you can use a __RadDocument__ and [insert the exported image]({%slug winforms/richtexteditor-/document-elements/inline-image%}) into it. Afterwards, you can use the __RadRichTextEditor__ 's [export]({%slug winforms/richtexteditor/import-export/overview%}) functionality. - - - diff --git a/controls/barcode/how-to/images/barcode-how-to-export-to-image001.png b/controls/barcode/how-to/images/barcode-how-to-export-to-image001.png deleted file mode 100644 index 72d0a5070..000000000 Binary files a/controls/barcode/how-to/images/barcode-how-to-export-to-image001.png and /dev/null differ diff --git a/controls/barcode/images/barcode-design-time001.png b/controls/barcode/images/barcode-design-time001.png deleted file mode 100644 index fa90fa8fd..000000000 Binary files a/controls/barcode/images/barcode-design-time001.png and /dev/null differ diff --git a/controls/barcode/images/barcode-getting-started001.png b/controls/barcode/images/barcode-getting-started001.png deleted file mode 100644 index 845da164e..000000000 Binary files a/controls/barcode/images/barcode-getting-started001.png and /dev/null differ diff --git a/controls/barcode/images/barcode-getting-started002.png b/controls/barcode/images/barcode-getting-started002.png deleted file mode 100644 index 77fa7c087..000000000 Binary files a/controls/barcode/images/barcode-getting-started002.png and /dev/null differ diff --git a/controls/barcode/images/barcode-getting-started003.png b/controls/barcode/images/barcode-getting-started003.png deleted file mode 100644 index db40e69a5..000000000 Binary files a/controls/barcode/images/barcode-getting-started003.png and /dev/null differ diff --git a/controls/barcode/images/barcode-getting-started004.gif b/controls/barcode/images/barcode-getting-started004.gif deleted file mode 100644 index 3c4105070..000000000 Binary files a/controls/barcode/images/barcode-getting-started004.gif and /dev/null differ diff --git a/controls/barcode/images/barcode-overview001.png b/controls/barcode/images/barcode-overview001.png deleted file mode 100644 index dbaff2845..000000000 Binary files a/controls/barcode/images/barcode-overview001.png and /dev/null differ diff --git a/controls/barcode/images/barcode-overview002.png b/controls/barcode/images/barcode-overview002.png deleted file mode 100644 index 32e6922dc..000000000 Binary files a/controls/barcode/images/barcode-overview002.png and /dev/null differ diff --git a/controls/barcode/overview.md b/controls/barcode/overview.md deleted file mode 100644 index 5048e3041..000000000 --- a/controls/barcode/overview.md +++ /dev/null @@ -1,51 +0,0 @@ ---- -title: Overview -page_title: Overview - Barcode -description: RadBarcode is a set of components that can be used to create, show and read barcodes. -slug: winforms/barcode/overview -tags: barcode -published: True -position: 0 -CTAControlName: Barcode ---- - -# WinForms Barcode Overview - -**RadBarcode** can be used to create and show barcodes. You can generate and visualize barcodes in a machine-readable format via the **RadBarcode** control by providing numeric or character data. - ->note As of R2 2022 Telerik UI for WinForms suite offers a new improved [RadBarcodeView]({%slug barcodeview-overview%}) control. You can check out the old documentation for the RadBarcode control which is obsolete. - -{% if site.has_cta_panels == true %} -{% include cta-panel-overview.html %} -{% endif %} - -![WinForms RadBarcode Sample Overview](images/barcode-overview001.png) - -![WinForms RadBarcode Overview Sample](images/barcode-overview002.png) - - -## Telerik UI for WinForms Learning Resources -* [Get Started with the Telerik UI for WinForms Barcode]({%slug winforms/barcode/getting-started%}) -* [Telerik UI for WinForms API Reference](https://docs.telerik.com/devtools/winforms/api/) -* [Getting Started with Telerik UI for WinForms Components]({%slug winforms/getting-started/first-steps%}) -* [Telerik UI for WinForms Virtual Classroom (Training Courses for Registered Users)](https://learn.telerik.com/learn/course/external/view/elearning/17/TelerikUIforWinForms) -* [Telerik UI for WinForms Forum](https://www.telerik.com/forums/winforms) -* [Telerik UI for WinForms Knowledge Base](https://docs.telerik.com/devtools/winforms/knowledge-base) - - -## Telerik UI for WinForms Additional Resources -* [Telerik UI for WinForms Product Overview](https://www.telerik.com/products/winforms.aspx) -* [Telerik UI for WinForms Blog](https://www.telerik.com/blogs/desktop-winforms) -* [Telerik UI for WinForms Videos](https://www.telerik.com/videos/product/winforms) -* [Telerik UI for WinForms Roadmap](https://www.telerik.com/support/whats-new/winforms/roadmap) -* [Telerik UI for WinForms Pricing](https://www.telerik.com/purchase/individual/winforms.aspx) -* [Telerik UI for WinForms Code Library](https://www.telerik.com/support/code-library/winforms) -* [Telerik UI for WinForms Support](https://www.telerik.com/support/winforms) -* [What’s New in Telerik UI for WinForms](https://www.telerik.com/support/whats-new/winforms) - -## See Also - -* [Design Time]({%slug winforms/barcode/design-time%}) -* [Getting Started]({%slug winforms/barcode/getting-started%}) - - diff --git a/controls/barcode/properties-methods-events.md b/controls/barcode/properties-methods-events.md deleted file mode 100644 index c3d7f87b3..000000000 --- a/controls/barcode/properties-methods-events.md +++ /dev/null @@ -1,51 +0,0 @@ ---- -title: Properties, Methods and Events -page_title: Properties, Methods and Events - Barcode -description: RadBarcode is a set of components that can be used to create, show and read barcodes. -slug: winforms/barcode/properties-methods-events -tags: barcode, getting started -published: True -position: 2 ---- - -# Properties - -|Property|Description| -|----|----| -|**BarcodeElement**|Gets the barcode element of this control.| -|**BackColor**|Gets or sets the back color for the barcode.| -|**Value**|Gets or sets the value that will be converted into a barcode.| -|**Symbology**|Gets or sets the symbology that will be used to convert the value of this element into a visual barcode representation.| - -# RadBarcodeElement's Properties - -|Property|Description| -|----|----| -|**ElementFactory**|Gets or sets the element factory that is used to create the elements of the displayed barcode.| - -# Methods - -|Method|Description| -|----|----| -|**ExportToImage()**|Exports the barcode with the current dimentions of the control.| -|**ExportToImage(int width, int height)**|Layouts the barcode using the provided dimentions and exports it to an image.| -|**ExportToImage(Stream stream, Size size)**| Layouts the barcode using the provided size and exports it to the specified stream.| -|**ExportToImage(string filePath, Size size)**|Layouts the barcode using the provided size and exports it to the specified file location.| -|**ExportToImage(Stream stream, Size size, ImageFormat imageFormat)**|Layouts the barcode using the provided size and exports it to the specified stream in the specified image format.| -|**ExportToImage(string filePath, Size size, ImageFormat imageFormat)**|Layouts the barcode using the provided size and exports it to the specified file location in the specified image format.| - -# Events - -|Event|Description| -|----|----| -|**ValueChanged**|Occurs after the value of the barcode is changed.| -|**ValueChanging**|Occurs before the value of the barcode is changed.| -|**SymbologyChanged**|Occurs after the symbology of the barcode is changed.| -|**SymbologyChanging**|Occurs before the symbology of the barcode is changed.| - - -# See Also - -* [Properties](https://docs.telerik.com/devtools/winforms/api/telerik.wincontrols.ui.radbarcode.html#properties) -* [Methods](https://docs.telerik.com/devtools/winforms/api/telerik.wincontrols.ui.radbarcode.html#methods) -* [Events](https://docs.telerik.com/devtools/winforms/api/telerik.wincontrols.ui.radbarcode.html#events) diff --git a/controls/barcodeview/kb-related-articles.md b/controls/barcodeview/kb-related-articles.md index af00ef3a1..097831cdf 100644 --- a/controls/barcodeview/kb-related-articles.md +++ b/controls/barcodeview/kb-related-articles.md @@ -15,7 +15,9 @@ The following article list Knowledge Base articles related to this section of co |KB Article| |----| +|[Barcode Column in RadGridView]({%slug barcode-column-in-gridview%})| |[Generating a Bar Code Image outside WinForms]({%slug barcodeview-generating-image-console-app%})| +|[How to Print RadBarcode]({%slug print-barcode%})| ## See Also diff --git a/controls/bindingnavigator/kb-related-articles.md b/controls/bindingnavigator/kb-related-articles.md index 249b8299d..fb8330d54 100644 --- a/controls/bindingnavigator/kb-related-articles.md +++ b/controls/bindingnavigator/kb-related-articles.md @@ -15,6 +15,7 @@ The following article list Knowledge Base articles related to this section of co |KB Article| |----| +|[Auto Sizing BindingNavigator when its content grows]({%slug auto-sizing-bindingnavigator-winforms%})| |[Showing Thousand Separator in RadBindingNavigator for WinForms]({%slug show-thousand-separator-radbindingnavigator-winforms%})| ## See Also diff --git a/controls/calendar/kb-related-articles.md b/controls/calendar/kb-related-articles.md index ecd19ae9e..b4c416b22 100644 --- a/controls/calendar/kb-related-articles.md +++ b/controls/calendar/kb-related-articles.md @@ -15,6 +15,7 @@ The following article list Knowledge Base articles related to this section of co |KB Article| |----| +|[Adding a Custom Panel Between Dates Area and Footer in UI for WinForms Calendar]({%slug calendar-add-custom-space-footer%})| |[Hiding Days Not of the Current Month in RadCalendar for WinForms]({%slug calendar-hide-month-days%})| |[How to Add a Week Selection in RadCalendar Control]({%slug calendar-howto-week-selection%})| diff --git a/controls/chat/chat-items/messages.md b/controls/chat/chat-items/messages.md index b2b321559..a90997fb4 100644 --- a/controls/chat/chat-items/messages.md +++ b/controls/chat/chat-items/messages.md @@ -93,15 +93,15 @@ A **ChatTextMessage** represents a single text message by a certain author and s ````C# this.radChat1.Author = new Author(Properties.Resources.nancy1, "Nancy"); -Author author2 = new Author(Properties.Resources.andrew1,"Andrew"); - -ChatTextMessage message1 = new ChatTextMessage("Hello", author2,DateTime.Now.AddHours(1)); +Author author2 = new Author(Properties.Resources.andrew1, "Andrew"); + +ChatTextMessage message1 = new ChatTextMessage("Hello", author2, DateTime.Now.AddHours(1)); this.radChat1.AddMessage(message1); - -ChatTextMessage message2 = new ChatTextMessage("Hi", this.radChat1.Author,DateTime.Now.AddHours(1).AddMinutes(10)); + +ChatTextMessage message2 = new ChatTextMessage("Hi", this.radChat1.Author, DateTime.Now.AddHours(1).AddMinutes(10)); this.radChat1.AddMessage(message2); - -ChatTextMessage message3 = new ChatTextMessage("How are you?", author2,DateTime.Now.AddHours(3)); + +ChatTextMessage message3 = new ChatTextMessage("How are you?", author2, DateTime.Now.AddHours(3)); this.radChat1.AddMessage(message3); ```` @@ -137,12 +137,12 @@ A **ChatMediaMessage** represents an image message by a certain author and sent ````C# -ChatMediaMessage mediaMessage = new ChatMediaMessage(Properties.Resources.TV_car1, new Size(300, 200), null, this.radChat1.Author, DateTime.Now); +ChatMediaMessage mediaMessage = new ChatMediaMessage(Properties.Resources.TV_car1, new Size(300, 200), this.radChat1.Author, DateTime.Now, null); this.radChat1.AddMessage(mediaMessage); ```` ````VB.NET -Dim mediaMessage As ChatMediaMessage = New ChatMediaMessage(My.Resources.TV_car1, New Size(300, 200), Nothing, Me.radChat1.Author, DateTime.Now) +Dim mediaMessage As ChatMediaMessage = New ChatMediaMessage(My.Resources.TV_car1, New Size(300, 200), Me.radChat1.Author, DateTime.Now, Nothing) Me.radChat1.AddMessage(mediaMessage) ```` diff --git a/controls/chat/kb-related-articles.md b/controls/chat/kb-related-articles.md index d51d08438..91eec0ba3 100644 --- a/controls/chat/kb-related-articles.md +++ b/controls/chat/kb-related-articles.md @@ -20,8 +20,10 @@ The following article list Knowledge Base articles related to this section of co |[How to Format the Time Separator in RadChat]({%slug format-chat-time-separator%})| |[How to Select and Copy Text in Chat Messages]({%slug how-to-select-and-copy-text-in-chat-messages%})| |[How to Use Shortcuts in Chat Messages]({%slug how-to-use-shortcuts-in-chat-messages%})| +|[Inserting a Message at a Specific Index in RadChat]({%slug chat-insert-message-specific-index%})| |[Preserve Text Message History Per User]({%slug chat-preserve-user-text-message-history%})| |[Reversed Order of Chat Messages]({%slug chat-messages-in-reversed-order%})| +|[Setting a Tooltip Text for Action Buttons in RadChat Toolbar]({%slug chat-action-buttons-tooltip%})| ## See Also diff --git a/controls/chat/toolbar.md b/controls/chat/toolbar.md index 0873d6840..4ddcdb72a 100644 --- a/controls/chat/toolbar.md +++ b/controls/chat/toolbar.md @@ -41,11 +41,11 @@ private void radChat1_ToolbarActionClicked(object sender, ToolbarActionEventArgs dlg.Title = "Open Image"; dlg.Filter = "png files (*.png)|*.png"; if (dlg.ShowDialog() == DialogResult.OK) - { - Image img = Image.FromFile(dlg.FileName); - ChatMediaMessage mediaMessage = new ChatMediaMessage(img, new Size(300, 200), null, this.radChat1.Author, DateTime.Now); - this.radChat1.AddMessage(mediaMessage); - } + { + Image img = Image.FromFile(dlg.FileName); + ChatMediaMessage mediaMessage = new ChatMediaMessage(img, new Size(300, 200), this.radChat1.Author, DateTime.Now, null); + this.radChat1.AddMessage(mediaMessage); + } dlg.Dispose(); } } @@ -65,7 +65,7 @@ Private Sub radChat1_ToolbarActionClicked(ByVal sender As Object, ByVal e As Too dlg.Filter = "png files (*.png)|*.png" If dlg.ShowDialog() = Windows.Forms.DialogResult.OK Then Dim img As Image = Image.FromFile(dlg.FileName) - Dim mediaMessage As ChatMediaMessage = New ChatMediaMessage(img, New Size(300, 200), Nothing, Me.radChat1.Author, DateTime.Now) + Dim mediaMessage As ChatMediaMessage = New ChatMediaMessage(img, New Size(300, 200), Me.radChat1.Author, DateTime.Now, Nothing) Me.radChat1.AddMessage(mediaMessage) End If dlg.Dispose() diff --git a/controls/diagram/custom-shapes.md b/controls/diagram/custom-shapes.md index 88d88d294..3f1301bb6 100644 --- a/controls/diagram/custom-shapes.md +++ b/controls/diagram/custom-shapes.md @@ -55,9 +55,9 @@ End Class RadDiagramShape shape1 = new RadDiagramShape() { - ShapeText = "", + Text = "", ElementShape = new MyShape(), - InternalElementColor = System.Drawing.Color.LightBlue + BackColor = System.Drawing.Color.LightBlue }; shape1.Position = new Telerik.Windows.Diagrams.Core.Point(100, 80); radDiagram1.AddShape(shape1); @@ -65,9 +65,9 @@ radDiagram1.AddShape(shape1); ```` ````VB.NET Dim shape1 As New RadDiagramShape() With { _ - .ShapeText = "", _ + .Text = "", _ .ElementShape = New MyShape(), _ - .InternalElementColor = System.Drawing.Color.LightBlue _ + .BackColor = System.Drawing.Color.LightBlue _ } shape1.Position = New Telerik.Windows.Diagrams.Core.Point(100, 80) '#Region "" diff --git a/controls/editors/kb-related-articles.md b/controls/editors/kb-related-articles.md index f77a9c97a..9b72d340a 100644 --- a/controls/editors/kb-related-articles.md +++ b/controls/editors/kb-related-articles.md @@ -15,6 +15,7 @@ The following article list Knowledge Base articles related to this section of co |KB Article| |----| +|[Applying AutoSelectNextPart Property to RadTimeOnlyPicker]({%slug timeonlypicker-auto-select-next-part%})| |[Change the height of RadTextBox]({%slug change-the-height-of-radtextbox%})| |[Create a Password Text Box]({%slug create-password-text-box%})| |[Dynamic DataSource in AutoCompleteBox/DropDownList]({%slug autocompletelist-with-dynamic-datasource%})| @@ -26,6 +27,7 @@ The following article list Knowledge Base articles related to this section of co |[How to Create Custom AutoComplete Items in RadAutoCompleteBox]({%slug autocompletebox-with-custom-autocomplete-items%})| |[How to disable backspace and delete keyboard buttons]({%slug datetimepicker-disable-backspace-delete%})| |[Preventing RadMaskedEditBox from Losing Focus on Validation Failure]({%slug maskededitbox-prevent-losing-focus-validation-failure%})| +|[Restricting User Typing in RadAutoCompleteBox]({%slug autocompletebox-restrict-user-input%})| |[Scientific Notation and Leading Zeros in Spin Editor]({%slug scientific-notation-leading-zeros-spineditor%})| |[Show auto-complete items which text contains the user's input in RadTextBoxControl]({%slug textboxcontrol-autocomplete-contains%})| |[Specify the Minutes/Hours Step in DateTimePicker's Popup]({%slug datetimepicker-steps-in-popup%})| diff --git a/controls/forms-and-dialogs/kb-related-articles.md b/controls/forms-and-dialogs/kb-related-articles.md index ce18a54a2..a224c5101 100644 --- a/controls/forms-and-dialogs/kb-related-articles.md +++ b/controls/forms-and-dialogs/kb-related-articles.md @@ -19,6 +19,7 @@ The following article list Knowledge Base articles related to this section of co |[Close Application after Closing All RadTabbedForms]({%slug close-application-after-closing-the-last-tabbedform%})| |[Customizing RadMessageBox with custom theme]({%slug customizing-radmessagebox-with-custom-theme%})| |[How to Hide the New Tab Button for the Popped out Forms]({%slug tabbedform-keep-show-new-tab-button%})| +|[How to use RadTitleBar on a standard MS Form/RadForm]({%slug titlebar-on-form%})| |[RadForm is Not Recognized in Solution Explorer]({%slug radform-is-not-recognized%})| |[Resizing an ActiveX control in RadForm]({%slug resizing-an-activex-control-in-radform%})| diff --git a/controls/gridview/kb-related-articles.md b/controls/gridview/kb-related-articles.md index a86c2a3a5..f51f7918d 100644 --- a/controls/gridview/kb-related-articles.md +++ b/controls/gridview/kb-related-articles.md @@ -17,13 +17,12 @@ The following article list Knowledge Base articles related to this section of co |----| |[“Check all” functionality in group rows]({%slug check-all-functionality-in-group-rows%})| |[Access RadGridView Elements]({%slug gridview-accessing-elements%})| -|[Add "Check All" in the header cell for a GridViewCheckBoxColumn]({%slug add-check-all-in-the-header-cell-for-a-gridviewcheckboxcolumn%})| +|[Add Check All in the header cell for a GridViewCheckBoxColumn]({%slug add-check-all-in-the-header-cell-for-a-gridviewcheckboxcolumn%})| |[Add two or more controls in one cell in RadGridView]({%slug add-two-or-more-controls-in-one-cell-in-grid%})| |[Adding custom elements inside a cell when it is in edit mode]({%slug adding-custom-elements-inside-a-cell-when-it-is-in-edit-mode%})| |[Adjusting GridViewComboBoxColumn Editor DropDown Width to the Longest Text in RadGridView]({%slug gridview-combobox-popup-width-longest-text%})| |[Allow End-Users to Add Items to MultiColumnCombobox Editor]({%slug allow-end-users-to-add-items-to-multicolumncombobox-editor%})| |[Application Hangs When a Single GridView Cell is Copied in Windows 11]({%slug windows11-clipboard-freeze%})| -|[Barcode Column in RadGridView]({%slug barcode-column-in-gridview%})| |[Bind GridViewComboBoxColumn to Enum Type Property]({%slug gridview-comboboxcolumn-enum%})| |[Binding RadGridView to Entity Framework Using Code First Approach]({%slug binding-radgridview-to-entity-framework-using-code-first-approach%})| |[Binding to a result of query]({%slug binding-to-a-result-of-query%})| @@ -63,8 +62,10 @@ The following article list Knowledge Base articles related to this section of co |[Export Selected Rows in RadGridView]({%slug gridview-export-selected-rows%})| |[Export two or more grids to a single sheet]({%slug export-to-single-sheet%})| |[Exporting RadGridView Asynchronously Preserving Its Visual Settings]({%slug exporting-radgridview-asynchronously-preserving-its-visual-settings%})| +|[Filtering Child Rows in Self-referencing Hierarchy While Keeping Parent Row Visible]({%slug grid-custom-filtering-self-referencing-hierarchy%})| |[Filtering Indicators in GridView]({%slug filtering-indicators-in-gridview%})| |[Filtering RadGridView by Multiple Values]({%slug gridview-custom-filter-multiple-values%})| +|[Forcing RadGridView to Snap One Row During Scrolling]({%slug gridview-snap-one-row-per-scroll%})| |[Format child cells on group cell click in RadGridView]({%slug grid-format-group-cell-click%})| |[Format the group key of a DateTime value in RadGridView]({%slug grid-format-group-key%})| |[Formatting Priority Order in RadGridView]({%slug gridview-cells-rows-formatting-priority%})| @@ -154,6 +155,7 @@ The following article list Knowledge Base articles related to this section of co |[RadGridView CRUD in Object Relational Hierarchy Mode]({%slug radgridview-crud-in-object-relational-hierarchy-mode%})| |[RadGridView Deferred Search on Tab key]({%slug gridview-deferred-search-on-tab%})| |[RadGridView Merge Cells]({%slug radgridview-merge-cells%})| +|[Removing the RadGridView Border]({%slug gridview-remove-border%})| |[Resizing the Header Row in RadGridView for WinForms]({%slug resize-header-row-radgridview-winforms%})| |[Save and Restore the rows states when resetting.]({%slug keep-states-on-reset%})| |[Set CharacterCasing for GridViewComboBoxColumn]({%slug gridview-comboboxcolumn-charactercasing%})| diff --git a/controls/map/how-to/adding-pins-and-drawing-regions.md b/controls/map/how-to/adding-pins-and-drawing-regions.md index e464c1b7c..f8241805d 100644 --- a/controls/map/how-to/adding-pins-and-drawing-regions.md +++ b/controls/map/how-to/adding-pins-and-drawing-regions.md @@ -95,7 +95,7 @@ public class CustomMapInputBehavior : MapInputBehavior MapPolygon pol = element as MapPolygon; if (pol != null) { - points.AddRange(pol.Points); + points.AddRange(pol.OuterBoundary); } } points.Add(location); @@ -138,7 +138,7 @@ Public Class CustomMapInputBehavior End If Dim pol As MapPolygon = TryCast(element, MapPolygon) If pol IsNot Nothing Then - points.AddRange(pol.Points) + points.AddRange(pol.OuterBoundary) End If Next points.Add(location) diff --git a/controls/map/providers/bingmaps/route.md b/controls/map/providers/bingmaps/route.md index d9bcb42d5..41323b6aa 100644 --- a/controls/map/providers/bingmaps/route.md +++ b/controls/map/providers/bingmaps/route.md @@ -69,29 +69,34 @@ public void RunRouteRequest() private void BingProvider_RoutingCompleted(object sender, RoutingCompletedEventArgs e) { List points = new List(); - foreach (double[] coordinatePair in e.Route.RoutePath.Line.Coordinates) + foreach (var route in e.Routes) { - Telerik.WinControls.UI.Map.PointG point = new Telerik.WinControls.UI.Map.PointG(coordinatePair[0], coordinatePair[1]); - points.Add(point); - } - Telerik.WinControls.UI.Map.RectangleG boundingRectangle = new Telerik.WinControls.UI.Map.RectangleG(e.Route.BBox[2], - e.Route.BBox[1], e.Route.BBox[0], e.Route.BBox[3]); - MapRoute routeElement = new MapRoute(points, boundingRectangle); - routeElement.BorderColor = Color.Blue; - routeElement.BorderWidth = 5; - MapPin start = new MapPin(new Telerik.WinControls.UI.Map.PointG(e.Route.RouteLegs[0].ActualStart.Coordinates[0], - e.Route.RouteLegs[0].ActualStart.Coordinates[1])); - start.BackColor = Color.White; - start.BorderColor = Color.Green; - start.BorderWidth = 2f; - MapPin end = new MapPin(new Telerik.WinControls.UI.Map.PointG(e.Route.RouteLegs[e.Route.RouteLegs.Length - 1].ActualEnd.Coordinates[0], - e.Route.RouteLegs[e.Route.RouteLegs.Length - 1].ActualEnd.Coordinates[1])); - end.BackColor = Color.White; - end.BorderColor = Color.Red; - end.BorderWidth = 2f; - this.radMap1.MapElement.Layers[0].Add(routeElement); - this.radMap1.MapElement.Layers[0].Add(start); - this.radMap1.MapElement.Layers[0].Add(end); + foreach (double[] coordinatePair in route.RoutePath.Line.Coordinates) + { + Telerik.WinControls.UI.Map.PointG point = new Telerik.WinControls.UI.Map.PointG(coordinatePair[0], coordinatePair[1]); + points.Add(point); + } + + Telerik.WinControls.UI.Map.RectangleG boundingRectangle = new Telerik.WinControls.UI.Map.RectangleG(route.BBox[2], + route.BBox[1], route.BBox[0], route.BBox[3]); + MapRoute routeElement = new MapRoute(points, boundingRectangle); + routeElement.BorderColor = Color.Blue; + routeElement.BorderWidth = 5; + MapPin start = new MapPin(new Telerik.WinControls.UI.Map.PointG(route.RouteLegs[0].ActualStart.Coordinates[0], + route.RouteLegs[0].ActualStart.Coordinates[1])); + start.BackColor = Color.White; + start.BorderColor = Color.Green; + start.BorderWidth = 2f; + MapPin end = new MapPin(new Telerik.WinControls.UI.Map.PointG(route.RouteLegs[route.RouteLegs.Length - 1].ActualEnd.Coordinates[0], + route.RouteLegs[route.RouteLegs.Length - 1].ActualEnd.Coordinates[1])); + end.BackColor = Color.White; + end.BorderColor = Color.Red; + end.BorderWidth = 2f; + + this.radMap1.MapElement.Layers[0].Add(routeElement); + this.radMap1.MapElement.Layers[0].Add(start); + this.radMap1.MapElement.Layers[0].Add(end); + } } ```` @@ -111,28 +116,34 @@ Public Sub RunRouteRequest() AddHandler bingProvider.CalculateRouteCompleted, AddressOf BingProvider_RoutingCompleted bingProvider.CalculateRouteAsync(request) End Sub -Private Sub BingProvider_RoutingCompleted(sender As Object, e As RoutingCompletedEventArgs) - Dim points As New List(Of Telerik.WinControls.UI.Map.PointG)() - For Each coordinatePair As Double() In e.Route.RoutePath.Line.Coordinates - Dim point As New Telerik.WinControls.UI.Map.PointG(coordinatePair(0), coordinatePair(1)) - points.Add(point) +Private Sub BingProvider_TruckRoutingCompleted(ByVal sender As Object, ByVal e As RoutingCompletedEventArgs) + Dim points As List(Of Telerik.WinControls.UI.Map.PointG) = New List(Of PointG)() + For Each route As Route In e.Routes + For Each coordinatePair As Double() In route.RoutePath.Line.Coordinates + Dim point As PointG = New PointG(coordinatePair(0), coordinatePair(1)) + points.Add(point) + Next + + Dim boundingRectangle As RectangleG = New RectangleG(route.BBox(2), route.BBox(1), + route.BBox(0), route.BBox(3)) + Dim routeElement As MapRoute = New MapRoute(points, boundingRectangle) + routeElement.BorderColor = Color.Blue + routeElement.BorderWidth = 5 + Dim start As MapPin = New MapPin(New PointG(route.RouteLegs(0).ActualStart.Coordinates(0), + route.RouteLegs(0).ActualStart.Coordinates(1))) + start.BackColor = Color.White + start.BorderColor = Color.Green + start.BorderWidth = 2.0F + Dim [end] As MapPin = New MapPin(New PointG(route.RouteLegs(route.RouteLegs.Length - 1).ActualEnd.Coordinates(0), + route.RouteLegs(route.RouteLegs.Length - 1).ActualEnd.Coordinates(1))) + [end].BackColor = Color.White + [end].BorderColor = Color.Red + [end].BorderWidth = 2.0F + Me.RadMap1.MapElement.Layers(0).Add(routeElement) + Me.RadMap1.MapElement.Layers(0).Add(start) + Me.RadMap1.MapElement.Layers(0).Add([end]) Next - Dim boundingRectangle As New Telerik.WinControls.UI.Map.RectangleG(e.Route.BBox(2), e.Route.BBox(1), e.Route.BBox(0), e.Route.BBox(3)) - Dim routeElement As New MapRoute(points, boundingRectangle) - routeElement.BorderColor = Color.Blue - routeElement.BorderWidth = 5 - Dim start As New MapPin(New Telerik.WinControls.UI.Map.PointG(e.Route.RouteLegs(0).ActualStart.Coordinates(0), e.Route.RouteLegs(0).ActualStart.Coordinates(1))) - start.BackColor = Color.White - start.BorderColor = Color.Green - start.BorderWidth = 2.0F - Dim [end] As New MapPin(New Telerik.WinControls.UI.Map.PointG(e.Route.RouteLegs(e.Route.RouteLegs.Length - 1).ActualEnd.Coordinates(0), _ - e.Route.RouteLegs(e.Route.RouteLegs.Length - 1).ActualEnd.Coordinates(1))) - [end].BackColor = Color.White - [end].BorderColor = Color.Red - [end].BorderWidth = 2.0F - Me.radMap1.MapElement.Layers(0).Add(routeElement) - Me.radMap1.MapElement.Layers(0).Add(start) - Me.radMap1.MapElement.Layers(0).Add([end]) + End Sub ```` diff --git a/controls/map/providers/bingmaps/truck-route.md b/controls/map/providers/bingmaps/truck-route.md index 6f9f4b378..b05bab83e 100644 --- a/controls/map/providers/bingmaps/truck-route.md +++ b/controls/map/providers/bingmaps/truck-route.md @@ -112,32 +112,35 @@ private void BingProvider_CalculateRouteError(object sender, CalculateRouteError private void BingProvider_TruckRoutingCompleted(object sender, RoutingCompletedEventArgs e) { List points = new List(); - - foreach (double[] coordinatePair in e.Route.RoutePath.Line.Coordinates) + foreach (var route in e.Routes) { - PointG point = new PointG(coordinatePair[0], coordinatePair[1]); - points.Add(point); + foreach (double[] coordinatePair in route.RoutePath.Line.Coordinates) + { + PointG point = new PointG(coordinatePair[0], coordinatePair[1]); + points.Add(point); + } + + RectangleG boundingRectangle = new RectangleG(route.BBox[2], route.BBox[1], + route.BBox[0], route.BBox[3]); + MapRoute routeElement = new MapRoute(points, boundingRectangle); + routeElement.BorderColor = Color.Blue; + routeElement.BorderWidth = 5; + MapPin start = new MapPin(new PointG(route.RouteLegs[0].ActualStart.Coordinates[0], + route.RouteLegs[0].ActualStart.Coordinates[1])); + start.BackColor = Color.White; + start.BorderColor = Color.Green; + start.BorderWidth = 2f; + MapPin end = new MapPin(new PointG(route.RouteLegs[route.RouteLegs.Length - 1].ActualEnd.Coordinates[0], + route.RouteLegs[route.RouteLegs.Length - 1].ActualEnd.Coordinates[1])); + end.BackColor = Color.White; + end.BorderColor = Color.Red; + end.BorderWidth = 2f; + + this.radMap1.MapElement.Layers[0].Add(routeElement); + this.radMap1.MapElement.Layers[0].Add(start); + this.radMap1.MapElement.Layers[0].Add(end); } - RectangleG boundingRectangle = new RectangleG(e.Route.BBox[2], e.Route.BBox[1], - e.Route.BBox[0], e.Route.BBox[3]); - MapRoute routeElement = new MapRoute(points, boundingRectangle); - routeElement.BorderColor = Color.Blue; - routeElement.BorderWidth = 5; - MapPin start = new MapPin(new PointG(e.Route.RouteLegs[0].ActualStart.Coordinates[0], - e.Route.RouteLegs[0].ActualStart.Coordinates[1])); - start.BackColor = Color.White; - start.BorderColor = Color.Green; - start.BorderWidth = 2f; - MapPin end = new MapPin(new PointG(e.Route.RouteLegs[e.Route.RouteLegs.Length - 1].ActualEnd.Coordinates[0], - e.Route.RouteLegs[e.Route.RouteLegs.Length - 1].ActualEnd.Coordinates[1])); - end.BackColor = Color.White; - end.BorderColor = Color.Red; - end.BorderWidth = 2f; - - this.radMap1.MapElement.Layers[0].Add(routeElement); - this.radMap1.MapElement.Layers[0].Add(start); - this.radMap1.MapElement.Layers[0].Add(end); } diff --git a/controls/barcode/kb-related-articles.md b/controls/navigationview/kb-related-articles.md similarity index 79% rename from controls/barcode/kb-related-articles.md rename to controls/navigationview/kb-related-articles.md index f37680126..a8856dcc3 100644 --- a/controls/barcode/kb-related-articles.md +++ b/controls/navigationview/kb-related-articles.md @@ -2,7 +2,7 @@ title: KB Related Articles page_title: KB Related Articles - Telerik UI for WinForms description: Custom examples built on top of the Telerik UI for WinForms control. -slug: barcode-kb-related-articles +slug: navigationview-kb-related-articles tags: kb, sdk, examples position: 1000 published: True @@ -15,7 +15,7 @@ The following article list Knowledge Base articles related to this section of co |KB Article| |----| -|[How to Print RadBarcode]({%slug print-barcode%})| +|[Preventing Nested Drag and Drop in NavigationView Pages]({%slug navigationview-drag-drop-customize%})| ## See Also diff --git a/controls/pdfviewer/features/ai-summarization.md b/controls/pdfviewer/features/ai-summarization.md new file mode 100644 index 000000000..65c78a754 --- /dev/null +++ b/controls/pdfviewer/features/ai-summarization.md @@ -0,0 +1,191 @@ +--- +title: AI Summarization +page_title: AI Summarization +description: Check our AI Summarization documentation article for the RadPdfViewer WinForms control. +slug: radpdfviewer-ai-summarization +tags: getting, started, ai, summarize +published: True +position: 5 +--- + +# AI Summarization for RadPdfViewer + +RadPdfViewer provides a smart summarization feature that allows you to use Large Language Models (LLMs) services to analyze the content of the PDF document. This functionality allows you to summarize document content and ask questions about the document, with the AI providing relevant answers based on the document's content. + +The AI Summarization feature is accessible through an integrated chat interface within the RadPdfViewer component. You can connect the RadPdfViewer to supported AI services to enable document analysis and summarization capabilities. The integrated chat interface allows users to enter custom prompts and receive AI-generated responses based on the PDF document content. + +![ai-summary1](images/pdfviewer-ai-summarization001.png) + +## Required NuGet Packages + +The summarization feature requires the installation of several additional packages beyond those needed for the RadPdfViewer control. + +### Required Packages + +```XML + + + + + + + + + + +``` + +### Using Assembly References + +The recommended installation approach is to use the Telerik NuGet packages, but in case you cannot do this, the following list shows the required `.dll` files. + +* `Telerik.Documents.AI.Core.dll` +* `Telerik.Documents.AI.RAG.dll` +* `Telerik.Windows.Documents.AIConnector.dll` +* `Telerik.Windows.Documents.Core.dll` +* `Telerik.Windows.Documents.Fixed.dll` +* `Telerik.Licensing.Runtime.dll` +* `Telerik.WinControls.dll` +* `Telerik.WinControlsUI.dll` +* `Telerik.Common.dll` +* `TelerikData.dll` + + +## Showing the AI Summarization UI + +The AI summarization is represented by a RadChat component that allows you to craft prompts and recieve reponses from the corresponding AI service. To enable it, set the `EnableAISummary` property to `true`. This will include an extra tab on the left part in the navigation pane in RadPdfViewer. Additionally, the **RadPdfViewerNavigator** shows a button that can be used to quickly show/hide the AI summarization feature directly from the UI. + +````C# +this.radPdfViewer1.EnableAISummary = true; + +```` +````VB.NET +Me.RadPdfViewer1.EnableAISummary = True + +```` + +![ai-summary2](images/pdfviewer-ai-summarization002.png) + + +## Setting up the AI Provider + +To connect the chat to an AI service, one of the built-in UI providers can be used. This setting is adjusted via the view model of the `PdfViewerElement`. All AI Providers implements the `ISummaryProvider` interface. + +````C# +// set the aiSummaryProvider beforehand +this.radPdfViewer1.PdfViewerElement.SummaryProvider = aiSummaryProvider; + +```` +````VB.NET +Me.RadPdfViewer1.PdfViewerElement.SummaryProvider = aiSummaryProvider + +```` + + +### Using Azure OpenAI Provider + +To enable the Azure OpenAI services, use the `AzureOpenAISummaryProvider` class. + +```C# +// Azure OpenAI Summary Provider example +string key = "your-azure-openai-key"; +SecureString secureKey = new SecureString(); +foreach (char c in key) +{ + secureKey.AppendChar(c); +} + +string endpoint = "https://your-resource-name.openai.azure.com/"; +string model = "model-name"; //ex: "gpt-4o-mini" +var azureOpenAIprovider = new Telerik.WinControls.UI.AIProviders.AzureOpenAISummaryProvider(secureKey, endpoint, model); +this.radPdfViewer1.PdfViewerElement.SummaryProvider = azureOpenAIprovider; + +``` + +### Using OpenAI Provider + +To enable the OpenAI services, use the `OpenAISummaryProvider` class. + +```C# +// Using OpenAI Provider +string key = "your-openai-key"; +SecureString secureKey = new SecureString(); +foreach (char c in key) +{ + secureKey.AppendChar(c); +} + +string model = "model-name"; //ex: "gpt-4o-mini" + +var openAIprovider = new Telerik.WinControls.UI.AIProviders.OpenAISummaryProvider(secureKey, model); +this.radPdfViewer1.PdfViewerElement.SummaryProvider = openAIprovider; + +``` + +### Using Ollama AI Provider (Local AI) + +To use a local Ollama AI model, utilize the `LlamaSummaryProvider` class. + +```C# +//Use Ollama Provider +string endpoint = "localhost server"; //ex: "http://localhost:11434/" +string model = "model-name"; //ex: "llama3" + +var ollamaProvider = new Telerik.WinControls.UI.AIProviders.LlamaSummaryProvider(endpoint, model); +this.radPdfViewer1.PdfViewerElement.SummaryProvider = ollamaProvider; + +``` + +#### Get Summary Programmatically + +To get a summarization of the document programmatically, use `GetSummary` method of the corresponding AI provider. + +```C# +var textDoc = this.radPdfViewer1.Document.ToSimpleTextDocument(null); +var summaryProvider = this.radPdfViewer1.PdfViewerElement.SummaryProvider; +Task.Run(() => +{ + string summary = summaryProvider.GetSummary(textDoc); + + // this is required only if you want to update the WinForms UI with the result + Application.Current.Dispatcher.Invoke(() => + { + // update the UI if needed + }); +}); + +``` + +#### Append Additional Instructions + +You can customize the AI behavior by setting the `PromptAddition` property of the provider. This property allows you to append additional instructions to the prompt, which will be applied during both summarization and question-answering operations. The following example demonstrates how to configure the AI provider to deliver a concise summary translated into Bulgarian. + +````C# +var summaryProvider = this.radPdfViewer1.PdfViewerElement.SummaryProvider; +summaryProvider.PromptAddition = "Be concise and translate the summary to Bulgarian."; + +```` + +#### SummaryResourcesCalculated Event + +The summary providers expose also an event called `SummaryResourcesCalculated` which is invoked before the actual summarization process begins (after the `GetSummary` method is invoked), providing information about the estimated resource usage. The `SummaryResourcesCalculatedEventArgs` provides the following properties: + +* `EstimatedCallsRequired`- The number of API calls required +* `EstimatedTokensRequired` - The number of tokens to be processed +* `ShouldContinueExecution` - A boolean flag indicating whether to proceed with summarization. The default value is `true`. + +````C# +private void SummarizationProvider_SummaryResourcesCalculated(object? sender, Telerik.Windows.Documents.AIConnector.SummaryResourcesCalculatedEventArgs e) +{ + // set e.ShouldContinueExecution = false; to cancel the summarization process +} + +```` + +### Adjusting the Max Number of Tokens + +The maximum number of tokens allowed is set via the `MaxTokenCount` property of the summary provider. + +```C# +var azureOpenAIprovider = new Telerik.Windows.Controls.FixedDocumentViewersUI.AIProviders.AzureOpenAISummaryProvider(secureKey, endpoint, model); +azureOpenAIprovider.MaxTokenCount = 1000; diff --git a/controls/pdfviewer/features/images/pdfviewer-ai-summarization001.png b/controls/pdfviewer/features/images/pdfviewer-ai-summarization001.png new file mode 100644 index 000000000..22d91fd1c Binary files /dev/null and b/controls/pdfviewer/features/images/pdfviewer-ai-summarization001.png differ diff --git a/controls/pdfviewer/features/images/pdfviewer-ai-summarization002.png b/controls/pdfviewer/features/images/pdfviewer-ai-summarization002.png new file mode 100644 index 000000000..c34b4073a Binary files /dev/null and b/controls/pdfviewer/features/images/pdfviewer-ai-summarization002.png differ diff --git a/controls/pdfviewer/features/text/image/pdfviewer-text-search.png b/controls/pdfviewer/features/text/image/pdfviewer-text-search.png new file mode 100644 index 000000000..9047118e3 Binary files /dev/null and b/controls/pdfviewer/features/text/image/pdfviewer-text-search.png differ diff --git a/controls/pdfviewer/features/text/text-search.md b/controls/pdfviewer/features/text/text-search.md new file mode 100644 index 000000000..88c60b995 --- /dev/null +++ b/controls/pdfviewer/features/text/text-search.md @@ -0,0 +1,118 @@ +--- +title: Text Search +page_title: Text Search - WinForms PdfViewer Control +description: WinForms PdfViewer supports search both through the UI and programmatically. +slug: winforms/pdfviewer/text/text-search +tags: text, search +published: True +position: 2 +previous_url: pdfviewer-text-text-search +--- + +# Text Search + +**RadPdfViewer** provides comprehensive text search functionality that supports both UI and programmatic search operations. Users can search for specific text within PDF documents using plain text strings or a regex for the search criteria. + +## Search through the UI + +In order to be able to select text from the UI, you can use [PdfViewerNavigator]({%slug winforms/pdfviewer/pdfviewernavigator%}). + +**RadPdfViewerNavigator** provides a built-in search functionality that allows users to search for text within PDF documents through an intuitive user interface. The navigator includes a search textbox and navigation buttons to find next/previous occurances and navigate through search results. + +![RadPdfViewer Search](images/pdfviewer-text-search.png) + +## Programmatic Search + +**RadPdfViewer** exposes a set of Find methods for programmatic text search. These methods allow you to search for text throughout the document or within specific ranges. + +### Find Overloads + +The Find method searches forward through the document: + +* **Find(string text)** - Finds the specified text in the current document using default search options. + +* **Find(string text, TextSearchOptions options)** - Finds the specified text using specified search options that control case sensitivity, whole word matching, and other parameters. + +* **Find(string text, TextSearchOptions options, TextPosition startPosition)** - Finds the specified text starting from a specific position. The search begins from the provided start position and moves forward through the document. + +* **Find(string text, TextSearchOptions options, TextRange range)** - Finds the specified text within a specific range. The search is limited to the text content within the provided range boundaries. + +### FindPrevious Overloads + +The FindPrevious methods search backward through the document: + +* **FindPrevious(string text)** - Finds the previous occurrence of the specified text using default search options. The search begins from the current selection or position and moves backward. + +* **FindPrevious(string text, TextSearchOptions options)** - Finds the previous occurrence using specified search options. The search moves backward through the document. + +* **FindPrevious(string text, TextSearchOptions options, TextPosition startPosition)** - Finds the previous occurrence starting from a specific position. The search begins from the provided start position and moves backward. + +* **FindPrevious(string text, TextSearchOptions options, TextRange range)** - Finds the previous occurrence within a specific range. The search moves backward through the text content within the provided range boundaries. + +### FindAll Overloads + +The FindAll methods return all occurrences of the search text: + +* **FindAll(string text)** - Finds all occurrences of the specified text in the document using default search options. + +* **FindAll(string text, TextSearchOptions options)** - Finds all occurrences using specified search options. Returns all matching results found throughout the entire document. + +* **FindAll(string text, TextSearchOptions options, TextPosition startPosition)** - Finds all occurrences starting from a specific position. Returns all matching results from the start position to the end of the document. + +* **FindAll(string text, TextSearchOptions options, TextRange range)** - Finds all occurrences within a specific range. Returns all matching results found within the boundaries of the provided text range. + +### SearchResult class + +All Find methods return a **SearchResult** object (or a collection of SearchResult objects for `FindAll()`). This class exposes the following public members that provide information about the results: + +* **TextRange**: An object describing the start and end positions of the match. This object exposed the following properties. +* **StartPosition**: An object that contains the start index and location of the current match. +* **EndPosition**: An object that contains the end index and location of the current match. +* **Result**: A string value representing the match. +* **GetWordBoundingRect()**: Gets the rectangle of the current match. +* **GetResultPage()**: Gets the page where the current result is. +* **SearchResult.NotFound** is returned when no match is found. + +#### Example: Searching in a document + +{{source=..\SamplesCS\PdfViewer\PdfTextManipulation.cs region=Find}} +{{source=..\SamplesVB\PdfViewer\PdfTextManipulation.vb region=Find}} + +````C# +SearchResult result = this.radPdfViewer1.Find("RadPdfViewer", TextSearchOptions.Default); + if (result == SearchResult.NotFound) + { + RadMessageBox.Show("String not found"); + } + else + { + this.radPdfViewer1.Select(result); + } + +```` +````VB.NET +Dim result As SearchResult = Me.radPdfViewer1.Find("RadPdfViewer", TextSearchOptions.Default) +If result = SearchResult.NotFound Then + RadMessageBox.Show("String not found") +Else + Me.radPdfViewer1.Select(result) +End If + +```` + +{{endregion}} + +### TextSearchOptions + +The **TextSearchOptions** class provides several properties to control the search behavior: + +- **CaseSensitive** - Determines whether the search is case-sensitive +- **UseRegularExpression** - Enables regular expression pattern matching +- **WholeWordsOnly** - Matches only complete words + +# See Also + +* [Getting Started]({%slug winforms/pdfviewer/getting-started%}) +* [Logical Structure]({%slug winforms/pdfviewer/structure/logical-structure%}) +* [Visual Structure]({%slug winforms/pdfviewer/structure/visual-structure%}) +* [Properties, Methods and Events]({%slug winforms/pdfviewer/properties-methods-and-events%}) \ No newline at end of file diff --git a/controls/pdfviewer/kb-related-articles.md b/controls/pdfviewer/kb-related-articles.md index ac47d83c9..4e196aa63 100644 --- a/controls/pdfviewer/kb-related-articles.md +++ b/controls/pdfviewer/kb-related-articles.md @@ -16,6 +16,7 @@ The following article list Knowledge Base articles related to this section of co |KB Article| |----| |[Adjusting Scroll Speed in RadPdfViewer for WinForms]({%slug pdfviewer-adjust-scroll-speed%})| +|[Disabling ContextMenu in RadPdfViewer for UI for WinForms]({%slug pdfviewer-disable-contextmenu%})| |[Fit to Width RadPdfViewer and Scroll to the Clicked Position]({%slug fit-to-width-pdf-and-locate-clicked-position%})| |[Highlight Form Fields in RadPdfViewer]({%slug pdfviewer-highlight-form-fields%})| |[How to Adjust Font Size for the Text Fields in PDF Forms]({%slug adjust-font-size-in-pdf-editor%})| diff --git a/controls/ribbonbar/kb-related-articles.md b/controls/ribbonbar/kb-related-articles.md index 3e0a8ae71..6574f14a1 100644 --- a/controls/ribbonbar/kb-related-articles.md +++ b/controls/ribbonbar/kb-related-articles.md @@ -17,7 +17,9 @@ The following article list Knowledge Base articles related to this section of co |----| |[Add watermark to RadRibbonBar]({%slug ribbonbar-add-watermark%})| |[Adding a Custom Banner to RadRibbonBar Header]({%slug radribbonbar-add-custom-banner%})| +|[Adding a Right-Aligned Button Visible Across All RibbonTabs in RadRibbonBar]({%slug ribbonbar-adding-right-aligned-elements-across-ribbontabs%})| |[Adding a WinForms control to a Ribbon Bar]({%slug adding-a-winforms-control-to-a-ribbon-bar%})| +|[Apply Theming to custom RadButtonElement in RadRibbonBar]({%slug ribbonbar-custom-button-element%})| |[Drag-Drop from RadRibbonBar to RadTreeView.]({%slug ribbonbar-dragdrop-treeview%})| |[How to show tooltip on disabled element in RibbonBar]({%slug ribbon-disabled-tooltip%})| |[RadRibbonBar design time exception]({%slug ribbonbar-design-time-exception%})| diff --git a/controls/richtexteditor/kb-related-articles.md b/controls/richtexteditor/kb-related-articles.md index e7a325c68..7ce1c0f03 100644 --- a/controls/richtexteditor/kb-related-articles.md +++ b/controls/richtexteditor/kb-related-articles.md @@ -26,6 +26,7 @@ The following article list Knowledge Base articles related to this section of co |[Paste Plain Text in RadRichTextBoxEditor]({%slug paste-plain-text%})| |[Print Silently Documents with RadRichTextEditor]({%slug silent-documents-printing-in-richtexteditor%})| |[Setting Custom Page Size on Document in RadRichTextEditor]({%slug radrichtexteditor-winforms-custom-page-size%})| +|[Setting Document Background and Editor Background in UI for WinForms RichTextEditor]({%slug richtexteditor-set-background-colors%})| ## See Also diff --git a/controls/scheduler/kb-related-articles.md b/controls/scheduler/kb-related-articles.md index 3292125e4..58784b616 100644 --- a/controls/scheduler/kb-related-articles.md +++ b/controls/scheduler/kb-related-articles.md @@ -21,6 +21,7 @@ The following article list Knowledge Base articles related to this section of co |[Customize Appointment Backgrounds and Statuses in RadScheduler]({%slug customize-appointment-backgrounds-and-statuses%})| |[Customizing AppointmentElement Text in RadScheduler]({%slug scheduler-customize-appointmentelement-text%})| |[Determining Header Cell and its Resource ID in MouseDown Events in RadScheduler]({%slug radscheduler-header-cell-click%})| +|[Disabling or Replacing Recurrence Change Message in UI for WinForms Scheduler]({%slug scheduler-disable-recurrence-message%})| |[How to Confirm Appointment's Resizing in RadScheduler]({%slug custom-resizing-behavior-in-radscheduler%})| |[How to customize Print Settings Dialog in RadScheduler]({%slug customize-print-settings-dialog%})| |[How to Display Multiple Resources in EditAppointmentDialog]({%slug scheduler-multiple-resource-in-edit-dialog%})| diff --git a/controls/spellchecker/kb-related-articles.md b/controls/spellchecker/kb-related-articles.md index 0d6b479dd..68a4bf0ac 100644 --- a/controls/spellchecker/kb-related-articles.md +++ b/controls/spellchecker/kb-related-articles.md @@ -16,7 +16,7 @@ The following article list Knowledge Base articles related to this section of co |KB Article| |----| |[Extract the Words Added to the Dictionary in RadSpellChecker]({%slug extract-words-added-to-dictionary%})| -|[How to Hide the 'Add to dictionary' Context Menu Item]({%slug hide-add-to-dictionary-context-menu-item%})| +|[How to Hide the Add to dictionary Context Menu Item]({%slug hide-add-to-dictionary-context-menu-item%})| |[Initial Spell-Checking Delay in RadSpellChecker]({%slug radspellchecker-initial-delay%})| ## See Also diff --git a/controls/spreadsheet/events.md b/controls/spreadsheet/events.md index 9037996e0..95818b8e9 100644 --- a/controls/spreadsheet/events.md +++ b/controls/spreadsheet/events.md @@ -182,20 +182,25 @@ End Sub * **ActivePresenterChanged**: Occurs when the active presenter is changed. * **HyperlinkClicked**: Occurs when a hyperlink in the document gets clicked. The event allows you to either cancel or replace the navigation logic. HyperlinkClicked event can be used as a confirmation from the end-user whether to proceed or not with opening a hyperlink due to security reasons. - With the 2024 Q3 (2024.3.924), the default navigation behavior of the hyperlinks is to automatically open only valid and trusted addresses. The hyperlink navigation can be canceled by either setting the __Handled__ property of the HyperlinkClickedEventArgs to _true_ or __IsTrustedUrl__ to _false_. + With the 2024 Q3 (2024.3.924), the default navigation behavior of the hyperlinks is to automatically open only valid and trusted addresses. + The hyperlink navigation can be canceled by either setting the __Handled__ property of the `HyperlinkClickedEventArgs` to _true_ or __IsTrustedUrl__ to _false_. + The __CellIndex__ property of `HyperlinkClickedEventArgs` gets the index of the cell that contains the hyperlink. + #### Example 4: Using the HyperlinkClicked event to implement confirmation for the clicked links in the document {{source=..\SamplesCS\Spreadsheet\Events.cs region=HyperlinkClickedEvent}} {{source=..\SamplesVB\Spreadsheet\Events.vb region=HyperlinkClickedEvent}} ````C# -private void ActiveWorksheetEditor_HyperlinkClicked(object sender, Telerik.WinControls.Hyperlinks.HyperlinkClickedEventArgs e) +private void ActiveWorksheetEditor_HyperlinkClicked(object sender, SpreadsheetHyperlinkClickedEventArgs e) { if (e.URL.EndsWith("exe")) { e.Handled = true; - MessageBoxResult Result = System.Windows.MessageBox.Show("You are about to open an executable file. Do you want to proceed?", "Possible unsafe link", MessageBoxButton.YesNo, MessageBoxImage.Question); + //Get CellIndex on the cell clicked to open the hyperlink + CellIndex cellIndex = e.CellIndex; + MessageBoxResult Result = System.Windows.MessageBox.Show("You are about to open an executable file. Do you want to proceed?", "Possible unsafe link", MessageBoxButton.YesNo, MessageBoxImage.Question); if (Result == MessageBoxResult.Yes) { Process.Start(new ProcessStartInfo() @@ -209,16 +214,20 @@ private void ActiveWorksheetEditor_HyperlinkClicked(object sender, Telerik.WinCo ```` ````VB.NET -Private Sub ActiveWorksheetEditor_HyperlinkClicked(ByVal sender As Object, ByVal e As Telerik.WinControls.Hyperlinks.HyperlinkClickedEventArgs) + +Private Sub ActiveWorksheetEditor_HyperlinkClicked(sender As Object, e As SpreadsheetHyperlinkClickedEventArgs) If e.URL.EndsWith("exe") Then e.Handled = True - Dim Result As MessageBoxResult = System.Windows.MessageBox.Show("You are about to open an executable file. Do you want to proceed?", "Possible unsafe link", MessageBoxButton.YesNo, MessageBoxImage.Question) - If Result = MessageBoxResult.Yes Then + 'Get CellIndex on the cell clicked to open the hyperlink + Dim cellIndex As CellIndex = e.CellIndex + + Dim Result As MessageBoxResult = System.Windows.MessageBox.Show("You are about to open an executable file. Do you want to proceed?", "Possible unsafe link", MessageBoxButton.YesNo, MessageBoxImage.Question) + If Result = MessageBoxResult.Yes Then Process.Start(New ProcessStartInfo() With { .FileName = e.URL, .UseShellExecute = True - }) + }) End If End If End Sub diff --git a/controls/spreadsheet/kb-related-articles.md b/controls/spreadsheet/kb-related-articles.md index 7980dac13..7aa1265bb 100644 --- a/controls/spreadsheet/kb-related-articles.md +++ b/controls/spreadsheet/kb-related-articles.md @@ -18,6 +18,8 @@ The following article list Knowledge Base articles related to this section of co |[Exporting FloatingChartShape to Bitmap in RadSpreadsheet for WinForms]({%slug convert-floatingchartshape-to-bitmap-radspreadsheet-winforms%})| |[Exporting FloatingImage from RadSpreadsheet Worksheet]({%slug radspreadsheet-export-floatingimage%})| |[Fill RadSpreadsheet with DataTable]({%slug fill-spreadsheet-with-datatable%})| +|[Hide different elements in RadSpreadsheet for WinForms]({%slug spreadsheet-hide-different-elements%})| +|[Hiding Sheet Selector and Stretching Scrollbar in UI for WinForms Spreadsheet]({%slug spreadsheet-hide-sheet-selector-stretch-scrollbar%})| |[How to Access RadSpreadsheet's Editor]({%slug access-editor-in-spreadsheet%})| |[How to Show ToolTip for RadSpreadsheet Cell]({%slug spreadsheet-cell-tooltip%})| diff --git a/controls/syntax-editor/kb-related-articles.md b/controls/syntax-editor/kb-related-articles.md index 578cc6cae..f5b9623e2 100644 --- a/controls/syntax-editor/kb-related-articles.md +++ b/controls/syntax-editor/kb-related-articles.md @@ -16,6 +16,7 @@ The following article list Knowledge Base articles related to this section of co |KB Article| |----| |[Add New Keyword to Existing Tagger]({%slug syntaxeditor-extend-default-tagger%})| +|[Adjusting Mouse Wheel Scroll Step in SyntaxEditor for UI for WinForms]({%slug syntaxeditor-mouse-wheel-step%})| |[Conditional Intelliprompts in SyntaxEditor]({%slug conditional-intelliprompts-in-syntaxeditor%})| |[Drag and Drop Text with Cursor Movement in RadSyntaxEditor for WinForms]({%slug syntaxeditor-dragdrop-cursor-position%})| |[How to Achieve Multiple Highlight Rules in SyntaxEditor]({%slug multiple-highlight-rules%})| diff --git a/controls/treeview/images/treeview-ui-automation001.png b/controls/treeview/images/treeview-ui-automation001.png new file mode 100644 index 000000000..0df7ffd01 Binary files /dev/null and b/controls/treeview/images/treeview-ui-automation001.png differ diff --git a/controls/treeview/kb-related-articles.md b/controls/treeview/kb-related-articles.md index be6e95f05..0849598f4 100644 --- a/controls/treeview/kb-related-articles.md +++ b/controls/treeview/kb-related-articles.md @@ -15,6 +15,7 @@ The following article list Knowledge Base articles related to this section of co |KB Article| |----| +|[Changing Expander Icon Color When the RadTreeView is Disabled UI for WinForms]({%slug treeview-change-disabled-icon-color%})| |[Changing the text color of a disabled RadTextBox]({%slug changing-the-text-color-of-a-disabled-radtextbox%})| |[Enabling Drag and Drop with MultiSelect in RadTreeView]({%slug treeview-drag-drop-preserve-multiselection%})| |[Find a RadTreeNode by the Value]({%slug treeview-find-node-by-value%})| diff --git a/controls/treeview/ui-automation.md b/controls/treeview/ui-automation.md new file mode 100644 index 000000000..863d7b8e7 --- /dev/null +++ b/controls/treeview/ui-automation.md @@ -0,0 +1,98 @@ +--- +title: UI Automation Support (UI Accessibility) +page_title: UI Automation Support (UI Accessibility) - RadTreeView +description: UI Automation Support (UI Accessibility) for RadTreeView. +slug: treeview-ui-automation +tags: treeview,ui,automation +published: True +position: 21 +--- + +# UI Automation Support + +With the Q4 2025 version of our controls, RadTreeView supports UI Automation. The current implementation of UI Automation for RadTreeView is similar to the MS WinForms TreeView implementation with some extended functionality. The main goal of this implementation is to ensure compliance with accessibility standards and to provide a common practice for automated testing. + +This functionality is enabled by default. To disable it, you can set the __EnableUIAutomation__ property to false. + +````C# + +this.radTreeView1.EnableUIAutomation = false; + +```` +````VB.NET + +Me.radTreeView1.EnableUIAutomation = False + +```` + +| **Tree Structure**| +|------------------------| +| ├─ [Tree](https://learn.microsoft.com/en-us/dotnet/framework/ui-automation/ui-automation-support-for-the-tree-control-type)| +|     ├─ [TreeItem](https://learn.microsoft.com/en-us/dotnet/framework/ui-automation/ui-automation-support-for-the-treeitem-control-type)| +|     ├─ [TreeItem](https://learn.microsoft.com/en-us/dotnet/framework/ui-automation/ui-automation-support-for-the-treeitem-control-type)| +|         └─ [Expander](https://learn.microsoft.com/en-us/dotnet/framework/ui-automation/ui-automation-support-for-the-headeritem-control-type)| +|         └─ [CheckBox](https://learn.microsoft.com/en-us/dotnet/framework/ui-automation/ui-automation-support-for-the-checkbox-control-type)| +|         └─ [Image](https://learn.microsoft.com/en-us/dotnet/framework/ui-automation/ui-automation-support-for-the-image-control-type)| +|         └─ [Text](https://learn.microsoft.com/en-us/dotnet/framework/ui-automation/ui-automation-support-for-the-text-control-type)| +|         └─ [TreeItem](https://learn.microsoft.com/en-us/dotnet/framework/ui-automation/ui-automation-support-for-the-treeitem-control-type)| +|     ├─ [TreeItem](https://learn.microsoft.com/en-us/dotnet/framework/ui-automation/ui-automation-support-for-the-treeitem-control-type)| +|     ├─ [HScrollbar](https://learn.microsoft.com/en-us/dotnet/framework/ui-automation/ui-automation-support-for-the-scrollbar-control-type)| +|     ├─ [VScrollbar](https://learn.microsoft.com/en-us/dotnet/framework/ui-automation/ui-automation-support-for-the-scrollbar-control-type)| + +## Relevant Properties + +The table below outlines the __UI Automation__ properties most important for understanding and interacting with RadTreeView control. + +#### RadTreeView + +* AutomationElementIdentifiers.ControlTypeProperty.Id => ControlType.Tree.Id +* AutomationElementIdentifiers.LocalizedControlTypeProperty.Id => "tree" +* AutomationElementIdentifiers.HelpTextProperty.Id => this.Owner.AccessibleDescription +* AutomationElementIdentifiers.IsContentElementProperty.Id +* AutomationElementIdentifiers.IsKeyboardFocusableProperty.Id +* AutomationElementIdentifiers.IsSelectionPatternAvailableProperty.Id +* AutomationElementIdentifiers.IsScrollPatternAvailableProperty.Id => true +* AutomationElementIdentifiers.NameProperty.Id => this.Owner.Name + +#### RadTreeNode + +* AutomationElementIdentifiers.ControlTypeProperty.Id => ControlType.TreeItem.Id +* AutomationElementIdentifiers.LocalizedControlTypeProperty.Id => "tree item" +* AutomationElementIdentifiers.HelpTextProperty.Id => this.Owner.ToolTipText +* AutomationElementIdentifiers.IsOffscreenProperty.Id => GetIsOffscreen() +* AutomationElementIdentifiers.NameProperty.Id => this.Owner.Text +* AutomationElementIdentifiers.HasKeyboardFocusProperty.Id => this.Owner.Selected +* AutomationElementIdentifiers.IsKeyboardFocusableProperty.Id => this.Owner.Enabled +* AutomationElementIdentifiers.IsEnabledProperty.Id => this.Owner.Enabled +* AutomationElementIdentifiers.IsContentElementProperty.Id +* AutomationElementIdentifiers.IsSelectionItemPatternAvailableProperty.Id +* AutomationElementIdentifiers.IsScrollItemPatternAvailableProperty.Id +* AutomationElementIdentifiers.IsExpandCollapsePatternAvailableProperty.Id +* AutomationElementIdentifiers.IsInvokePatternAvailableProperty.Id => true +* AutomationElementIdentifiers.IsTogglePatternAvailableProperty.Id => this.Owner.TreeViewElement?.CheckBoxes == true + +## Supported Control Patterns + +The following section outlines the supported automation patterns for the __RadTreeView__ control and its constituent elements. + +#### RadTreeView + +* [Selection Control Pattern](https://learn.microsoft.com/en-us/windows/win32/winauto/uiauto-implementingselection) +* [Scroll Control Pattern](https://learn.microsoft.com/en-us/windows/win32/winauto/uiauto-implementingscroll) + +#### RadTreeNode + +* [SelectionItem Control Pattern](https://learn.microsoft.com/en-us/windows/win32/winauto/uiauto-implementingselectionitem) +* [ExpandCollapse Control Pattern](https://learn.microsoft.com/en-us/windows/win32/winauto/uiauto-implementingexpandcollapse) +* [ScrollItem Control Pattern](https://learn.microsoft.com/en-us/windows/win32/winauto/uiauto-implementingscrollitem) +* [Invoke Control Pattern](https://learn.microsoft.com/en-us/windows/win32/winauto/uiauto-implementinginvoke) +* [Toggle Control Pattern](https://learn.microsoft.com/en-us/windows/win32/winauto/uiauto-implementingtoggle) + + +## See Also + +* [Getting Started]({%slug winforms/treeview/getting-started%}) +* [Structure]({%slug winforms/treeview/structure%}) + + + diff --git a/getting-started/first-steps.md b/getting-started/first-steps.md index de6c790dd..af77e0143 100644 --- a/getting-started/first-steps.md +++ b/getting-started/first-steps.md @@ -25,7 +25,7 @@ The process consists of the following steps: 1. [Download](https://www.telerik.com/try/ui-for-winforms) the WinForms Installer and start the installation. - 1. Make sure that **Telerik UI for .NET WinForms** is selected and continue with the setup. + 1. Make sure that **Telerik UI for WinForms** is selected and continue with the setup. 1. Log in with your Telerik account and complete the installation. @@ -53,6 +53,42 @@ The easiest way to get the controls to your development machine is to use the [P >tip The following article provides step-by-step instructions how to install Telerik UI for WinForms on your computer: [Installing UI for WinForms](http://docs.telerik.com/devtools/winforms/installation-deployment-and-distribution/installing-on-your-computer) +## Add the Telerik NuGet Server + +Telerik maintains a NuGet feed with official UI for Telerik UI for WinForms releases. These packages are available for registered users with an active trial or commercial license. Adding the Telerik NuGet server as a source in Visual Studio lets you download and install Telerik packages containing controls and utilities. + +As the Telerik NuGet server requires authentication, the first step is to obtain an API key that you will use instead of a password. Using an API key instead of a password is a more secure approach, especially when working with the NuGet.Config file. + +1. Go to the [API Keys](https://www.telerik.com/account/downloads/api-keys) page in your Telerik account. + +1. Click **Generate New Key +**. + + ![generate-api-key](images/account-generate-api-key.png) + +1. In the **Key Note** field, add a note that describes the API key. + +1. When ready, click **Generate Key**. + +1. Select **Copy and Close**. Once you close the window, you can no longer copy the generated key. For security reasons, the API Keys page displays only a portion of the key. + +1. Store the generated NuGet API key as you will need it in the next steps. Whenever you need to authenticate your system with the Telerik NuGet server, use api-key as the username and your generated API key as the password. + +>API keys expire after two years. Telerik will send you an email when a key is about to expire, but we recommend that you set your own calendar reminder with information about where you used that key: file paths, project links, AzDO and GitHub Action variable names, and so on. + +Next, add the Telerik NuGet feed to Visual Studio: + +1. In Visual Studio and go to **Tools > NuGet Package Manager > Package Manager Settings**. + +1. Select **Package Sources** and then click the + button to add a new package source. + +1. Enter a **Name** for the new package source, for example, `telerik.com`. + +1. Add the `https://nuget.telerik.com/v3/index.json` URL as a **Source**. Click **OK**. + +1. Whenever Visual Studio displays a dialog to enter credentials for `nuget.telerik.com`, use `api-key` as the username and your NuGet API key as the password. + + ![generate-api-key](images/telerik-nuget-feed.png) + ## Create a new WinForms Telerik Project If you **do not have a project**, run the [Create Project Wizard]({% slug winforms/installation-deployment-and-distribution/visual-studio-extensions/project-creation %}) diff --git a/getting-started/images/account-generate-api-key.png b/getting-started/images/account-generate-api-key.png new file mode 100644 index 000000000..4c03bc232 Binary files /dev/null and b/getting-started/images/account-generate-api-key.png differ diff --git a/getting-started/images/telerik-nuget-feed.png b/getting-started/images/telerik-nuget-feed.png new file mode 100644 index 000000000..342ca1d72 Binary files /dev/null and b/getting-started/images/telerik-nuget-feed.png differ diff --git a/installation-and-upgrades/distributions.md b/installation-and-upgrades/distributions.md index 8fc3e1dda..0644d5740 100644 --- a/installation-and-upgrades/distributions.md +++ b/installation-and-upgrades/distributions.md @@ -12,6 +12,8 @@ position: 1 This article dives into UI controls, focusing on their compatibility with Microsoft Framework versions. We will break down the current distributions, ensuring you stay in sync with the latest updates for seamless integration into your projects. +>note Telerik WinForms for UI 2025 Q4 is now compatible with the latest .NET 10 (2025). We consistently monitor Microsoft's latest releases to guarantee that our software remains compatible. + ## .NET Framework |Telerik Distribution|Telerik Versions|Supported Runtime| @@ -32,7 +34,7 @@ This article dives into UI controls, focusing on their compatibility with Micros |.NET 6| R3 2021 SP1 - 2025 Q1|.NET 6 and later | |.NET 7| R3 2022 SP2 - 2024 Q3|.NET 7 and later| |.NET 8| 2024 Q2 - present|.NET 8 and later| -|.NET 9| 2024 Q4 - present|.NET 9 and later| +|.NET 9| 2024 Q4 - present|.NET 9 / .NET 10 and later| >note .NET 6 distribution is discontinued in 2025 Q2. For more information see [Microsoft .NET and .NET Core Support Policy](https://dotnet.microsoft.com/en-us/platform/support/policy/dotnet-core). diff --git a/knowledge-base/barcode-column-in-gridview.md b/knowledge-base/barcode-column-in-gridview.md index 7460fc41d..8a8e10b5b 100644 --- a/knowledge-base/barcode-column-in-gridview.md +++ b/knowledge-base/barcode-column-in-gridview.md @@ -5,7 +5,7 @@ type: how-to page_title: How to Achieve Barcode Column in RadGridView slug: barcode-column-in-gridview position: 5 -tags: gridview, image, copy, cell +tags: barcodeview, image, copy, cell ticketid: 1521435 res_type: kb --- @@ -203,10 +203,10 @@ End Class ```` ->important The example shows the [QRCode](https://docs.telerik.com/devtools/winforms/controls/barcode/barcode-types/2d-barcodes/qrcode/overview). This approach can be followed for the rest of the barcode [types](https://docs.telerik.com/devtools/winforms/controls/barcode/barcode-types/supported-types) as well. +>important The example shows the [QRCode]({%slug barcodeview-barcode-types-2d-barcodes-qrcode-overview%}). This approach can be followed for the rest of the barcode [types]({%slug barcodeview-barcode-types-supported-types%}) as well. -# See Also +## See Also -* [Barcode]({%slug winforms/barcode/overview%}) +* [BarcodeView]({%slug barcodeview-overview%}) * [Creating Custom Cells]({%slug winforms/gridview/cells/creating-custom-cells%}) diff --git a/knowledge-base/pageview-mode-in-nested-gridview-levels.md b/knowledge-base/pageview-mode-in-nested-gridview-levels.md index f98c93a08..778a813d0 100644 --- a/knowledge-base/pageview-mode-in-nested-gridview-levels.md +++ b/knowledge-base/pageview-mode-in-nested-gridview-levels.md @@ -319,8 +319,7 @@ End Class ```` -# See Also +## See Also -* [Binding to Hierarchical Data Programmatically]({%slug winforms/barcode/overview%}) * [Creating Custom Cells]({%slug winforms/gridview/hierarchical-grid/binding-to-hierarchical-data-programmatically%}) diff --git a/knowledge-base/print-barcode.md b/knowledge-base/print-barcode.md index ca8f09529..e454cebcb 100644 --- a/knowledge-base/print-barcode.md +++ b/knowledge-base/print-barcode.md @@ -5,7 +5,7 @@ type: how-to page_title: How to Print RadBarcode slug: print-barcode position: 0 -tags: barcode, print +tags: barcodeview, print res_type: kb --- @@ -17,7 +17,7 @@ res_type: kb ## Description -**RadBarcode** doesn't support printing out of the box. However, it offers [exporting to image](https://docs.telerik.com/devtools/winforms/controls/barcode/how-to/export-to-image) functionality. +**RadBarcode** doesn't support printing out of the box. However, it offers [exporting to image](https://docs.telerik.com/devtools/winforms/controls/barcodeview/how-to/export-to-image) functionality. This article demonstrates how to get benefit from the **RadRichTextEditor**'s printing behavior and achieve printing **RadBarcode**. diff --git a/licensing/kb-related-articles.md b/licensing/kb-related-articles.md index ff8e2e7e5..b13407fe4 100644 --- a/licensing/kb-related-articles.md +++ b/licensing/kb-related-articles.md @@ -21,6 +21,7 @@ The following article list Knowledge Base articles related to the License mechan |[No License Key Found Warning in Visual Studio 2019 When License Key is Present]({%slug kb-installation-missing-license-vs-2019%})| |[Resolving TelerikLicense.vb Build Error for Telerik UI for WinForms 2025 Q1 License Key]({%slug resolve-telerik-license-vb-error%})| |[Set Your License Key in OpenEdge Project]({%slug set-up-license-key-openedge%})| +|[Telerik License Watermark Appears When UI for WinForms Form is Used in Add-In Project]({%slug add-license-key-in-add-in-project%})| ## See Also diff --git a/telerik-presentation-framework/class-hierarchy/baseprimitive.md b/telerik-presentation-framework/class-hierarchy/baseprimitive.md index 2daf6a56f..ba3526b99 100644 --- a/telerik-presentation-framework/class-hierarchy/baseprimitive.md +++ b/telerik-presentation-framework/class-hierarchy/baseprimitive.md @@ -21,17 +21,14 @@ __BasePrimitive__ is a [VisualElement]({%slug winforms/telerik-presentation-fram public override void PaintPrimitive(IGraphics graphics, float angle, SizeF scale) { Rectangle rect = this.BoundingRectangle; - -     graphics.DrawString(this.Text, rect, this.Font, this.ForeColor, this.TextAlignment, this.CreateStringFormat(), - this.Shadow, this.TextRenderingHint, this.TextOrientation, this.FlipText); + graphics.DrawString(this.Text, rect, this.Font, this.ForeColor, this.CreateStringFormat(), this.TextOrientation, this.FlipText); } ```` ````VB.NET Public Overrides Sub PaintPrimitive(graphics As IGraphics, angle As Single, scale As SizeF) Dim rect As Rectangle = Me.BoundingRectangle - graphics.DrawString(Me.Text, rect, Me.Font, Me.ForeColor, Me.TextAlignment, Me.CreateStringFormat(), _ - Me.Shadow, Me.TextRenderingHint, Me.TextOrientation, Me.FlipText) + graphics.DrawString(Me.Text, rect, Me.Font, Me.ForeColor, Me.CreateStringFormat(), Me.TextOrientation, Me.FlipText) End Sub ```` diff --git a/telerik-presentation-framework/kb-related-articles.md b/telerik-presentation-framework/kb-related-articles.md index 958e9e847..49a4eb30f 100644 --- a/telerik-presentation-framework/kb-related-articles.md +++ b/telerik-presentation-framework/kb-related-articles.md @@ -98,6 +98,7 @@ The following article list Knowledge Base articles related to this section of co |[Using RadControls for WinForms inside a WinForms validation process]({%slug using-radcontrols-for-winforms-inside-a-winforms-validation-process%})| |[Using RadControls for WinForms with inherited forms]({%slug using-radcontrols-for-winforms-with-inherited-forms%})| |[Using RadEditor for ASP.NET AJAX in a Windows application]({%slug using-radeditor-for-asp-net-ajax-in-a-windows-application%})| +|[Version Upgrade]({%slug versions-upgrade%})| |[WinForms Converter crashes with Visual Studio 15.8]({%slug troubleshoot-winforms-converter%})| |[Wrapping a .NET user control as an ActiveX]({%slug wrapping-a-net-user-control-as-an-activex%})| diff --git a/telerik-presentation-framework/ui-automation.md b/telerik-presentation-framework/ui-automation.md index e92d4c6b0..6d77b64f5 100644 --- a/telerik-presentation-framework/ui-automation.md +++ b/telerik-presentation-framework/ui-automation.md @@ -18,6 +18,7 @@ Implementing UI Automation for custom WinForms controls requires a distinct appr Here is a list of the controls which support __UI Automation__. +* [RadGridView]({%slug gridview-ui-automation%}) * [RadNavigationView]({%slug navigationview-ui-automation%}) * [RadDropDownList]({%slug dropdown-listcontrol-and-checkeddropdownlist-dropdownlist-ui-automation%}) * [RadListControl]({%slug dropdown-listcontrol-and-checkeddropdownlist-listcontrol-ui-automation%}) diff --git a/urlrewriter.config b/urlrewriter.config index 64bc47c5f..8ce6aea58 100644 --- a/urlrewriter.config +++ b/urlrewriter.config @@ -432,9 +432,23 @@ - - - + + + + + + + + + + + + + + + + + diff --git a/visual-studio-integration/images/account-generate-api-key.png b/visual-studio-integration/images/account-generate-api-key.png new file mode 100644 index 000000000..4c03bc232 Binary files /dev/null and b/visual-studio-integration/images/account-generate-api-key.png differ diff --git a/visual-studio-integration/images/install-nuget-keys001.png b/visual-studio-integration/images/install-nuget-keys001.png deleted file mode 100644 index 123e49942..000000000 Binary files a/visual-studio-integration/images/install-nuget-keys001.png and /dev/null differ diff --git a/visual-studio-integration/images/install-nuget-keys002.png b/visual-studio-integration/images/install-nuget-keys002.png deleted file mode 100644 index 630d57953..000000000 Binary files a/visual-studio-integration/images/install-nuget-keys002.png and /dev/null differ diff --git a/visual-studio-integration/images/install-nuget-keys003.png b/visual-studio-integration/images/install-nuget-keys003.png deleted file mode 100644 index e9981f78a..000000000 Binary files a/visual-studio-integration/images/install-nuget-keys003.png and /dev/null differ diff --git a/visual-studio-integration/images/install-nuget-keys004.png b/visual-studio-integration/images/install-nuget-keys004.png deleted file mode 100644 index a22ed287f..000000000 Binary files a/visual-studio-integration/images/install-nuget-keys004.png and /dev/null differ diff --git a/visual-studio-integration/images/installation-deployment-and-distribution-install-using-nuget004.png b/visual-studio-integration/images/installation-deployment-and-distribution-install-using-nuget004.png index f986f7bdd..904cfeb63 100644 Binary files a/visual-studio-integration/images/installation-deployment-and-distribution-install-using-nuget004.png and b/visual-studio-integration/images/installation-deployment-and-distribution-install-using-nuget004.png differ diff --git a/visual-studio-integration/images/installation-deployment-and-distribution-install-using-nuget005.png b/visual-studio-integration/images/installation-deployment-and-distribution-install-using-nuget005.png index 472346ee2..a7aa1edd7 100644 Binary files a/visual-studio-integration/images/installation-deployment-and-distribution-install-using-nuget005.png and b/visual-studio-integration/images/installation-deployment-and-distribution-install-using-nuget005.png differ diff --git a/visual-studio-integration/images/installation-deployment-and-distribution-install-using-nuget006.png b/visual-studio-integration/images/installation-deployment-and-distribution-install-using-nuget006.png index f938e6d99..819cfd4b1 100644 Binary files a/visual-studio-integration/images/installation-deployment-and-distribution-install-using-nuget006.png and b/visual-studio-integration/images/installation-deployment-and-distribution-install-using-nuget006.png differ diff --git a/visual-studio-integration/images/installation-deployment-and-distribution-install-using-nuget007.png b/visual-studio-integration/images/installation-deployment-and-distribution-install-using-nuget007.png deleted file mode 100644 index 435775533..000000000 Binary files a/visual-studio-integration/images/installation-deployment-and-distribution-install-using-nuget007.png and /dev/null differ diff --git a/visual-studio-integration/install-nuget-keys.md b/visual-studio-integration/install-nuget-keys.md index 9485e3c3a..2b29875b4 100644 --- a/visual-studio-integration/install-nuget-keys.md +++ b/visual-studio-integration/install-nuget-keys.md @@ -10,40 +10,32 @@ position: 9 # Restoring NuGet Packages in Your CI Workflow -This article provides an overview of the most popular approaches for using token-based authentication to restore Telerik NuGet packages in your CI (Continuous Integration) workflow. +This article describes how to use token-based authentication for the Telerik NuGet feed. You will learn how to create and use NuGet API keys to restore Telerik NuGet packages in your Continuous Integration (CI) workflow. -The Telerik NuGet server allows you to authenticate by using two methods: - -* Basic authentication by providing your Telerik user name and password. -* Token-based authentication by providing a NuGet Key. - -When you need to restore Telerik NuGet packages as part of your CI, using NuGet keys is the more secure way to authenticate. This method does not require you to provide your Telerik username and password anywhere in the CI workflow. - -Unlike your Telerik credentials, a NuGet Key has a limited scope and can be used only with the Telerik NuGet server. If any of your NuGet keys is compromised, you can quickly delete it and create a new one. +The Telerik NuGet server supports secure authentication through token-based mechanisms using NuGet API keys. When integrating Telerik packages into your CI pipeline, using API keys provides enhanced security compared to traditional username and password authentication. Unlike your Telerik credentials, a NuGet Key has a limited scope and can be used only with the Telerik NuGet server. If any of your NuGet keys is compromised, you can quickly delete it and create a new one. ## Generating NuGet Keys -1\. Go to the [Manage NuGet Keys](https://www.telerik.com/account/downloads/nuget-keys) page in your Telerik account. - -2\. Select the **DOWNLOADS** tab and then **Manage NuGet Keys**: +As the Telerik NuGet server requires authentication, the first step is to obtain an API key that you will use instead of a password. Using an API key instead of a password is a more secure approach, especially when working with [.NET CLI](https://docs.telerik.com/devtools/winforms/visual-studio-integration/install-nuget-keys#using-only-cli-commands) or the [NuGet.Config file](https://docs.telerik.com/devtools/winforms/visual-studio-integration/install-nuget-keys#using-a-nugetconfig-file-with-your-projects). -![install-nuget-keys 001](images/install-nuget-keys001.png) +1. Go to the [API Keys](https://www.telerik.com/account/downloads/api-keys) page in your Telerik account. +1. Click **Generate New Key +**. -3\. To create a new key, select the **Generate New Key** button. + ![Manage API Keys](images/account-generate-api-key.png) -![install-nuget-keys 002](images/install-nuget-keys002.png) +1. In the **Key Note** field, add a note that describes the API key. -4\. Enter a name for the NuGet Key, and then select **Generate Key**. +1. Click **Generate Key**. -![install-nuget-keys 003](images/install-nuget-keys003.png) +1. Select **Copy and Close**. Once you close the window, you can no longer copy the generated key. For security reasons, the **API Keys** page displays only a portion of the key. -5\. To copy the key, select **Copy and Close**. Once you close the window, you can no longer copy the generated key. For security reasons, the NuGet Keys page displays only a portion of the key. +1. Store the generated NuGet API key as you will need it in the next steps. Whenever you need to authenticate your system with the Telerik NuGet server, use `api-key` as the username and your generated API key as the password. -![install-nuget-keys 004](images/install-nuget-keys004.png) +>API keys expire after two years. Telerik will send you an email when a key is about to expire, but we recommend that you set your own calendar reminder with information about where you used that key: file paths, project links, AzDO and GitHub Action variable names, and so on. -## Storing a NuGet Key +## Storing API Keys ->note Never check in a NuGet Key with your source code or leave it publicly visible in plain text, for example, as a raw key value in a nuget.config file. A NuGet Key is valuable as bad actors can use it to access the NuGet packages that are licensed under your account. A potential key abuse could lead to a review of the affected account. +>note Never check in an API Key with your source code or leave it publicly visible in plain text, for example, as a raw key value in a nuget.config file. An API Key is valuable as bad actors can use it to access the NuGet packages that are licensed under your account. A potential key abuse could lead to a review of the affected account. To protect the NuGet Key, store it as a secret environment variable. The exact steps depend on your workflow: @@ -57,7 +49,7 @@ If you use Azure DevOps Service connection instead of secret environment variabl For more details on storing and protecting your NuGet Key, check the [Announcing NuGet Keys](https://www.telerik.com/blogs/announcing-nuget-keys) blog post by Lance McCarthy. -## Using a NuGet Key +## Using an API Key There are two popular ways to use the Telerik NuGet server in a build: diff --git a/visual-studio-integration/install-using-nuget.md b/visual-studio-integration/install-using-nuget.md index 79e82b5cd..fbc5a306f 100644 --- a/visual-studio-integration/install-using-nuget.md +++ b/visual-studio-integration/install-using-nuget.md @@ -12,57 +12,104 @@ position: 9 -This article describes how you can install the WinForms suite using a NuGet package. There are two ways for getting the NuGet packages: +This article explains how to install the Telerik UI for WinForms suite using NuGet packages. Before installing, you need to [Generate an API Key](#generate-an-api-key). There are two methods available for obtaining the NuGet packages: +* [Get the packages from the Telerik NuGet server](#download-from-the-telerik-nuget-server) * [Manually download the packages](#manually-download-nuget-packages) -* [Get the packages from the Telerik NuGet server](#download-from-the-nuget-server) +## Generate an API Key -## Manually Download NuGet Packages +As the Telerik NuGet server requires authentication, the first step is to obtain an API key that you will use instead of a password. Using an API key instead of a password is a more secure approach, especially when working with [.NET CLI](https://docs.telerik.com/devtools/winforms/visual-studio-integration/install-nuget-keys#using-only-cli-commands) or the [NuGet.Config file](https://docs.telerik.com/devtools/winforms/visual-studio-integration/install-nuget-keys#using-a-nugetconfig-file-with-your-projects). -1. First you need to log in using your licensed account. This way you will be able to download the packages: +1. Go to the [API Keys](https://www.telerik.com/account/downloads/api-keys) page in your Telerik account. +1. Click **Generate New Key +**. - ![installation-deployment-and-distribution-install-using-nuget 001](images/installation-deployment-and-distribution-install-using-nuget001.png) + ![Manage API Keys](images/account-generate-api-key.png) - >tip The following article shows where you can find the downloads section [Download Product Files](https://docs.telerik.com/devtools/winforms/installation-and-upgrades/download-product-files) - -1. Then you need to add packages to Visual Studio. Open the NuGet manager and then click the options button: - - ![installation-deployment-and-distribution-install-using-nuget 002](images/installation-deployment-and-distribution-install-using-nuget002.png) +1. In the **Key Note** field, add a note that describes the API key. -1. Add new package source. The __Source__ should point to the folder with the NuGets: - - ![installation-deployment-and-distribution-install-using-nuget 003](images/installation-deployment-and-distribution-install-using-nuget003.png) +1. Click **Generate Key**. -1. The final step is to select and install the desired packages. Please note that there are several versions, corresponding to the target framework used in the project, one for .NET 4.0, one for 4.8, one for .NET 6.0 or newer. +1. Select **Copy and Close**. Once you close the window, you can no longer copy the generated key. For security reasons, the **API Keys** page displays only a portion of the key. - ![installation-deployment-and-distribution-install-using-nuget 00](images/installation-deployment-and-distribution-install-using-nuget008.png) +1. Store the generated NuGet API key as you will need it in the next steps. Whenever you need to authenticate your system with the Telerik NuGet server, use `api-key` as the username and your generated API key as the password. + +>API keys expire after two years. Telerik will send you an email when a key is about to expire, but we recommend that you set your own calendar reminder with information about where you used that key: file paths, project links, AzDO and GitHub Action variable names, and so on. -## Download from the NuGet server +## Download from the Telerik NuGet server -You need to add the Telerik package server (**https://nuget.telerik.com/v3/index.json**) to the package sources in visual studio. +This method allows you to install Telerik UI for WinForms packages directly from the official Telerik NuGet server. To use this approach, you need to configure Visual Studio to connect to the Telerik NuGet server (**https://nuget.telerik.com/v3/index.json**) as a package source. -> The NuGet v2 server at https://nuget.telerik.com/nuget will be sunset in November 2024. The new v3 protocol offers faster package searches and restores, improved security, and more reliable infrastructure. To redirect your feed to the NuGet v3 protocol, all you have to do is to change your NuGet package source URL to https://nuget.telerik.com/v3/index.json. +> The NuGet v2 server at https://nuget.telerik.com/nuget was sunset in November 2024. The new v3 protocol offers faster package searches and restores, improved security, and more reliable infrastructure. To redirect your feed to the NuGet v3 protocol, all you have to do is to change your NuGet package source URL to https://nuget.telerik.com/v3/index.json. -1. First open the __Options__ window: +1. First open the __Options__ window. Right-click on the project, from the menu choose **Manage NuGet Packages...**: ![installation-deployment-and-distribution-install-using-nuget 002](images/installation-deployment-and-distribution-install-using-nuget002.png) -1. Add new source and add the server to the Source field: +1. **Configure the package source**. Click the **Settings** (gear) icon, then select **Package Sources**. Add a new package source with the following details: + - **Name**: Telerik NuGet Feed (or any descriptive name) + - **Source**: `https://nuget.telerik.com/v3/index.json` ![installation-deployment-and-distribution-install-using-nuget 004](images/installation-deployment-and-distribution-install-using-nuget004.png) -1. When the __Package Source__ is selected you will be prompted for a user name and a password. Use the credentials for your Telerik Account: +1. Click **Update** and then **OK** to save the configuration. You have successfully added the Telerik NuGet feed as a Package source! + +1. **Authenticate with the Telerik NuGet server**. When you select the Telerik NuGet Feed as the package source, Visual Studio will prompt you to authenticate. Enter the following credentials: + - **Username**: `api-key` + - **Password**: Your generated NuGet API key from your Telerik account ![installation-deployment-and-distribution-install-using-nuget 005](images/installation-deployment-and-distribution-install-using-nuget005.png) -1. Then you can just select and install the desired NuGet packages. + >note To generate an API key, see [Generate an API Key](#generate-an-api-key). The API key is specific to your licensed account and provides access to the packages you are entitled to use. + +1. In the Package Manager, browse the Telerik NuGet feed for **UI.for.WinForms.AllControls** package. You will see all Telerik packages available to your licensed account. + +1. Select the target framework version. Choose the package version that matches your project's target framework (.NET Framework 4.8, .NET 6.0, .NET 8.0, .NET 9.0 or later) and click **Install**: + + ![installation-deployment-and-distribution-install-using-nuget 006](images/installation-deployment-and-distribution-install-using-nuget006.png) + + +### Reset Stored Credentials + +If you have previously stored credentials for the Telerik NuGet server, you need to update them with a new API key. Or if you encounter some authentication issues, follow these steps to reset the stored credentials: + +1. Remove any saved credentials from the [Windows Credential Manager](https://support.microsoft.com/en-us/windows/credential-manager-in-windows-1b5c916a-6a16-889f-8581-fc16e8165ac0). Look for entries named `nuget.telerik.com` or `VSCredentials_nuget.telerik.com` entries. + +1. Remove the Telerik NuGet package source from Visual Studio. + +1. Clear .NET CLI configuration (if applicable). If you have configured the Telerik package source using the .NET CLI, remove it by running these commands: - ![installation-deployment-and-distribution-install-using-nuget 006](images/installation-deployment-and-distribution-install-using-nuget006.png) + - [dotnet nuget list source](https://learn.microsoft.com/en-us/dotnet/core/tools/dotnet-nuget-list-source) + - [dotnet nuget remove source](https://learn.microsoft.com/en-us/dotnet/core/tools/dotnet-nuget-remove-source) -It is necessary to choose this Nuget package which corresponds to the respective [target framework]({%slug assemblies-version%}) selected in your project: - ![installation-deployment-and-distribution-install-using-nuget 007](images/installation-deployment-and-distribution-install-using-nuget007.png) +1. Verify that no credentials are stored in `%AppData%\NuGet\NuGet.Config`. If you find any Telerik-related entries, remove them manually. + +1. Try to reset the Visual Studio user data by [forcing NuGet to ask for authentication](https://stackoverflow.com/questions/43550797/how-to-force-nuget-to-ask-for-authentication-when-connecting-to-a-private-feed). + +1. Close and restart Visual Studio to ensure all cached credentials are cleared. + +1. If you are using the Telerik NuGet feed in a .NET Core application, use a [NuGet API key in the NuGet.Config file](https://docs.telerik.com/devtools/winforms/visual-studio-integration/install-nuget-keys#using-a-nugetconfig-file-with-your-projects). + +## Manually Download NuGet Packages + +1. First you need to log in using your licensed account. This way you will be able to download the packages: + + ![installation-deployment-and-distribution-install-using-nuget 001](images/installation-deployment-and-distribution-install-using-nuget001.png) + + >tip The following article shows where you can find the downloads section [Download Product Files](https://docs.telerik.com/devtools/winforms/installation-and-upgrades/download-product-files) + +1. Then you need to add packages to Visual Studio. Open the NuGet manager and then click the options button: + + ![installation-deployment-and-distribution-install-using-nuget 002](images/installation-deployment-and-distribution-install-using-nuget002.png) + +1. Add new package source. The __Source__ should point to the folder with the NuGets: + + ![installation-deployment-and-distribution-install-using-nuget 003](images/installation-deployment-and-distribution-install-using-nuget003.png) + +1. The final step is to select and install the desired packages. Please note that there are several versions, corresponding to the target framework used in the project, one for .NET 4.0, one for 4.8, one for .NET 6.0 or newer. + + ![installation-deployment-and-distribution-install-using-nuget 00](images/installation-deployment-and-distribution-install-using-nuget008.png) # See Also