diff --git a/ai-coding-assistant/converter/_meta.yml b/ai-coding-assistant/converter/_meta.yml deleted file mode 100644 index aacf4f7f2..000000000 --- a/ai-coding-assistant/converter/_meta.yml +++ /dev/null @@ -1,2 +0,0 @@ -title: Telerik Converter -tag: preview \ No newline at end of file diff --git a/ai-coding-assistant/converter/converter-getting-started.md b/ai-coding-assistant/converter/converter-getting-started.md index 0a9477c71..780e9838b 100644 --- a/ai-coding-assistant/converter/converter-getting-started.md +++ b/ai-coding-assistant/converter/converter-getting-started.md @@ -6,7 +6,6 @@ slug: converter-getting-started tags: telerik,winforms,converter,migration,getting started,mcp,mcp server,convert,radgridview,radbutton,upgrade,modernize,step-by-step published: True position: 2 -tag: preview --- # Getting Started with the Telerik WinForms Converter diff --git a/ai-coding-assistant/converter/converter-tools.md b/ai-coding-assistant/converter/converter-tools.md index 70b864566..01acd3c02 100644 --- a/ai-coding-assistant/converter/converter-tools.md +++ b/ai-coding-assistant/converter/converter-tools.md @@ -6,7 +6,6 @@ slug: converter-tools tags: telerik,winforms,converter,mcp,mcp tools,telerik_convert_file,telerik_analyze_project,telerik_get_migration_plan,migration strategy,converter engine,roslyn,prompts published: True position: 3 -tag: preview --- # Telerik Converter MCP Tools Reference diff --git a/ai-coding-assistant/converter/converter.md b/ai-coding-assistant/converter/converter.md index ddb2f751e..c6e2678a3 100644 --- a/ai-coding-assistant/converter/converter.md +++ b/ai-coding-assistant/converter/converter.md @@ -6,7 +6,6 @@ slug: converter tags: telerik,winforms,converter,tool,migration,convert,mcp,mcp server,automated migration,radgridview,radbutton,radtextbox,ai,code generation,upgrade,modernize published: True position: 0 -tag: preview --- # Telerik UI for WinForms Converter diff --git a/ai-coding-assistant/mcp-server.md b/ai-coding-assistant/mcp-server.md index 424b6d27b..f876692cc 100644 --- a/ai-coding-assistant/mcp-server.md +++ b/ai-coding-assistant/mcp-server.md @@ -76,13 +76,13 @@ The Telerik WinForms [MCP (Model Context Protocol) Server](https://modelcontextp ### Install with Telerik CLI (Recommended) -The easiest way to install and configure the Telerik WinForms MCP Server is through the [Telerik CLI]({%slug winforms/getting-started/telerik-cli%}). A single command line sets up the MCP server for your IDE automatically: +The easiest way to install and configure the Telerik WinForms MCP Server is through the [Telerik CLI]({%slug telerik-cli%}). A single command line sets up the MCP server for your IDE automatically: ```powershell telerik mcp config winforms ``` -This command automatically creates or updates the `.mcp.json` configuration file for all supported IDEs. You can also specify a target IDE with the `--ide` option (for example, `telerik mcp config winforms --ide vscode`). For more details, see [Telerik CLI - Install MCP Server]({%slug winforms/getting-started/telerik-cli%}#install-mcp-server). +This command automatically creates or updates the `.mcp.json` configuration file for all supported IDEs. You can also specify a target IDE with the `--ide` option (for example, `telerik mcp config winforms --ide vscode`). For more details, see [Telerik CLI - Install MCP Server]({%slug telerik-cli%}#install-mcp-server). ### Install with .NET CLI Commands diff --git a/analytics/google-analytics-integration.md b/analytics/google-analytics-integration.md deleted file mode 100644 index 18690187f..000000000 --- a/analytics/google-analytics-integration.md +++ /dev/null @@ -1,273 +0,0 @@ ---- -title: Google Analytics Integration -page_title: Google Analytics Integration - UI for WinForms Documentation -description: When you are creating an application for a broad audience, integrating some kind of analytics framework is crucial, because you will need to analyze the usage data of the application and its features and most probably you will need to know about any application crashes or other errors occurred during the execution. -slug: winforms/analytics/google-analytics-integration -tags: telerik,analytics,google,integration -published: True -position: 1 ---- - -# Google Analytics Integration - -This article shows how to use the Telerik Analytics API to implement a custom Google Analytics provider and send information to it. - -## Setting up Google Analytics Dashboard - ->tip This information is relevant at the time of writing of this article (September 2023) and it may not be up-to-date at the moment you read the article. - -1. [Create a new Google Analytics 4 Property](https://support.google.com/analytics/answer/9744165?hl=en#upgrade&zippy=%2Cin-this-article) in your google.com account. - -2. Go to the __Admin__ menu and [create a new web data stream](https://support.google.com/analytics/answer/9304153?hl=en). It can point to a dummy website address. - -3. Open the data stream details and copy its [MEASUREMENT ID](https://support.google.com/analytics/answer/12270356?hl=en). - -4. [Create a Measurement Protocol API secret](https://support.google.com/analytics/thread/78848659/ga4-how-create-api-secret-for-measurement-protocol?hl=en) and copy the secret value. - -5. In order to test the data you send, disable the __Internal Traffic__ filter from the following menu, __Admin —> Data Settings —> Data Filters__. Also, event sending can be tested with the [Google Analytics Event Builder](https://ga-dev-tools.google/ga4/event-builder/). - -The Measurement Id and API secret copied in steps 3 and 4 will be used in the .NET API shown in the [Implementing the Analytics Provider](#implementing-the-analytics-provider) section of this article. - -## Setting up the Project - -To send information to the Google Analytics dashboard manually, use the [Measurement Protocol (Google Analytics 4)](https://developers.google.com/analytics/devguides/collection/protocol/ga4) API provided by Google. The API allows you to send http requests with the required event information. The following example uses the [GoogleAnalytics.Ga4-Dotnet.Sdk](https://github.com/DAIMTO/GoogleAnalytics.Ga4.Dotnet.Sdk) unofficial GA4 SDK to send information to the dashboard. - ->important The __GoogleAnalytics.Ga4.DotNet.Sdk__ is build against .NET 6, which means the example in this article is relevant to projects targeting .NET 6 and later. - -1. Download the source code of the [GoogleAnalytics.Ga4-Dotnet.Sdk](https://github.com/DAIMTO/GoogleAnalytics.Ga4.Dotnet.Sdk). - -2. Open the solution and build the __GoogleAnalytics.Ga4.DotNet.Sdk__ project. This will produce the __GoogleAnalytics.Ga4.DotNet.Sdk.dll__. - -3. Create a new WinForms project (or use an existing one) targeting __.NET 6__. Then reference __GoogleAnalytics.Ga4.DotNet.Sdk.dll__. - -4. Add a reference to __Telerik.Windows.Controls.dll__. - -5. Install the __Microsoft.Extensions.Http__ nuget package. - -## Implementing the Analytics Provider - -To implement analytics provider that sends data to the Google dashboard, create a trace monitor class that implements the `ITraceMonitor` interface. To apply the new monitor use the `TrackerManager` class. - -The following example demonstrates a simple implementation of the `ITraceMonitor` interface that uses the `MeasurementService` class from the __GoogleAnalytics.Ga4-Dotnet.Sdk__ project to send events to the Google Analytics 4 property. - - -#### __[C#] IHttpClientFactory implementation needed by the MeasurementService__ - -````C# - -public class HttpClientFactory : IHttpClientFactory -{ - private readonly string _baseAddress = "https://www.google-analytics.com"; - public HttpClient CreateClient(string name) - { - return new HttpClient() - { - BaseAddress = new Uri(_baseAddress), - DefaultRequestHeaders = - { - { "Accept", "application/json" }, - { "User-Agent", "My Project Name" } - } - }; - } -} - - -```` -````VB.NET - -Public Class HttpClientFactory - Implements IHttpClientFactory - Private ReadOnly _baseAddress As String = "https://www.google-analytics.com" - Public Function CreateClient(name As String) As HttpClient Implements IHttpClientFactory.CreateClient - Dim httpClient As HttpClient = New HttpClient() - httpClient.BaseAddress = New Uri(_baseAddress) - httpClient.DefaultRequestHeaders.Add("Accept", "application/json") - httpClient.DefaultRequestHeaders.Add("User-Agent", "My Project Name") - Return httpClient - End Function -End Class - - - -```` - - -#### __[C#] ITraceMonitor implementation__ - -````C# - -public class GoogleAnalyticsMonitor : ITraceMonitor -{ - private MeasurementService service; - private string uniqueClienId; - - public GoogleAnalyticsMonitor(string measurementId, string appSecret) - { - var options = Options.Create(new GoogleAnalyticsClientSettings() - { - MeasurementId = measurementId, - AppSecret = appSecret - }); - var client = new BasicHttpClient(new HttpClientFactory(), options); - service = new MeasurementService(client); - uniqueClienId = "UniqueClientIdHere"; - } - - public async void TrackAtomicFeature(string feature) - { - // "atomic_feature" is a custom event name that will be send to Google Analytics - // "tracked_atomic_feature" is a custom parameter name that will be send to Google Anlaytics - var gaEvent = EventBuilders.BuildCustomEvent("atomic_feature", new Dictionary()); - gaEvent.AddParameters("tracked_atomic_feature", feature); - var request = new EventRequest(uniqueClienId); - request.AddEvent(gaEvent); - EventResponse result = await service.CreateEventRequest(request).Execute(false); - } - - public async void TrackError(string feature, Exception exception) - { - var gaEvent = EventBuilders.BuildCustomEvent("exception", new Dictionary()); - gaEvent.AddParameters("tracked_exception", exception.Message); - var request = new EventRequest(uniqueClienId); - request.AddEvent(gaEvent); - EventResponse result = await service.CreateEventRequest(request).Execute(false); - } - - public async void TrackFeatureCancel(string feature) - { - var gaEvent = EventBuilders.BuildCustomEvent("feature_cancel", new Dictionary()); - gaEvent.AddParameters("tracked_feature_cancel", feature); - var request = new EventRequest(uniqueClienId); - request.AddEvent(gaEvent); - EventResponse result = await service.CreateEventRequest(request).Execute(false); - } - - public async void TrackFeatureEnd(string feature) - { - var gaEvent = EventBuilders.BuildCustomEvent("feature_end", new Dictionary()); - gaEvent.AddParameters("tracked_feature_end", feature); - var request = new EventRequest(uniqueClienId); - request.AddEvent(gaEvent); - EventResponse result = await service.CreateEventRequest(request).Execute(false); - } - - public async void TrackFeatureStart(string feature) - { - var gaEvent = EventBuilders.BuildCustomEvent("feature_start", new Dictionary()); - gaEvent.AddParameters("tracked_feature_start", feature); - var request = new EventRequest(uniqueClienId); - request.AddEvent(gaEvent); - EventResponse result = await service.CreateEventRequest(request).Execute(false); - } - - public async void TrackValue(string feature, long value) - { - var gaEvent = EventBuilders.BuildCustomEvent("value_event", new Dictionary()); - gaEvent.AddParameters("tracked_value", feature); - var request = new EventRequest(uniqueClienId); - request.AddEvent(gaEvent); - EventResponse result = await service.CreateEventRequest(request).Execute(false); - } -} - - -```` -````VB.NET - -Public Class GoogleAnalyticsMonitor - Implements ITraceMonitor - - Private service As MeasurementService - Private uniqueClienId As String - Public Sub New(ByVal measurementId As String, ByVal appSecret As String) - Dim clientOptions = Options.Create(New GoogleAnalyticsClientSettings() With { - .MeasurementId = measurementId, - .AppSecret = appSecret - }) - Dim client = New BasicHttpClient(New HttpClientFactory(), clientOptions) - service = New MeasurementService(client) - uniqueClienId = "UniqueClientIdHere" - End Sub - Public Async Sub TrackAtomicFeature(feature As String) Implements ITraceMonitor.TrackAtomicFeature - Dim gaEvent = EventBuilders.BuildCustomEvent("atomic_feature", New Dictionary(Of String, Object)()) - gaEvent.AddParameters("tracked_atomic_feature", feature) - Dim request = New EventRequest(uniqueClienId) - request.AddEvent(gaEvent) - Dim result As EventResponse = Await service.CreateEventRequest(request).Execute(False) - End Sub - - Public Async Sub TrackFeatureStart(feature As String) Implements ITraceMonitor.TrackFeatureStart - Dim gaEvent = EventBuilders.BuildCustomEvent("feature_start", New Dictionary(Of String, Object)()) - gaEvent.AddParameters("tracked_feature_start", feature) - Dim request = New EventRequest(uniqueClienId) - request.AddEvent(gaEvent) - Dim result As EventResponse = Await service.CreateEventRequest(request).Execute(False) - End Sub - - Public Async Sub TrackFeatureEnd(feature As String) Implements ITraceMonitor.TrackFeatureEnd - Dim gaEvent = EventBuilders.BuildCustomEvent("feature_end", New Dictionary(Of String, Object)()) - gaEvent.AddParameters("tracked_feature_end", feature) - Dim request = New EventRequest(uniqueClienId) - request.AddEvent(gaEvent) - Dim result As EventResponse = Await service.CreateEventRequest(request).Execute(False) - End Sub - - Public Async Sub TrackFeatureCancel(feature As String) Implements ITraceMonitor.TrackFeatureCancel - Dim gaEvent = EventBuilders.BuildCustomEvent("feature_cancel", New Dictionary(Of String, Object)()) - gaEvent.AddParameters("tracked_feature_cancel", feature) - Dim request = New EventRequest(uniqueClienId) - request.AddEvent(gaEvent) - Dim result As EventResponse = Await service.CreateEventRequest(request).Execute(False) - End Sub - - Public Async Sub TrackError(feature As String, exception As Exception) Implements ITraceMonitor.TrackError - Dim gaEvent = EventBuilders.BuildCustomEvent("exception", New Dictionary(Of String, Object)()) - gaEvent.AddParameters("tracked_exception", exception.Message) - Dim request = New EventRequest(uniqueClienId) - request.AddEvent(gaEvent) - Dim result As EventResponse = Await service.CreateEventRequest(request).Execute(False) - End Sub - - Public Async Sub TrackValue(feature As String, value As Long) Implements ITraceMonitor.TrackValue - Dim gaEvent = EventBuilders.BuildCustomEvent("value_event", New Dictionary(Of String, Object)()) - gaEvent.AddParameters("tracked_value", feature) - Dim request = New EventRequest(uniqueClienId) - request.AddEvent(gaEvent) - Dim result As EventResponse = Await service.CreateEventRequest(request).Execute(False) - End Sub -End Class - - - -```` - - -To apply the custom monitor, set the static `ControlTraceMonitor.AnalyticsMonitor` property, possibly in the constructor of your application. - - -````C# - -void SetGoogleAnalyticsMonitor() -{ - ControlTraceMonitor.AnalyticsMonitor = new GoogleAnalyticsMonitor("G-NWGCDXW4TJ", "wkl43C69QSqEphQxQsW0vA"); -} - - -```` -````VB.NET - -Private Sub SetGoogleAnalyticsMonitor() - ControlTraceMonitor.AnalyticsMonitor = New GoogleAnalyticsMonitor("G-NWGCDXW4TJ", "wkl43C69QSqEphQxQsW0vA") -End Sub - - -```` - - ->tip Read in details how to setup the Google Analytics dashboards in its [documentation](https://support.google.com/analytics/). - - -## See Also - -* [Analytics Support]({%slug winforms/analytics/analytics-support%}) diff --git a/analytics/images/google-analytics-dashboard.png b/analytics/images/google-analytics-dashboard.png deleted file mode 100644 index e402430b6..000000000 Binary files a/analytics/images/google-analytics-dashboard.png and /dev/null differ diff --git a/cloud-integration/aws/connect-to-data-in-the-cloud/dynamodb.md b/cloud-integration/aws/connect-to-data-in-the-cloud/dynamodb.md deleted file mode 100644 index f34e3dcdf..000000000 --- a/cloud-integration/aws/connect-to-data-in-the-cloud/dynamodb.md +++ /dev/null @@ -1,412 +0,0 @@ ---- -title: Dynamo DB -page_title: Dynamo DB - WinForms Cloud Integration -description: Learn how you can use Dynamo DB with the Telerik UI For WinForms suite. Other cloud services like GoogleCloud, AWS, and Azure are also available. -slug: cloud-services/aws/dynamodb -tags: cloud,aws,dynamodb -published: True -position: 0 ---- - -# Dynamo DB - -This article will show you how to create a WinForms application and access data stored in a DynamoDB table. It shows how you can connect to the **AWS DynamoDB** service from a blank WinForms project as well. - -Please note that you can use the local version of DynamoDB to setup and test your application. This article shows a real example. - - -## Step 1: Create a WinForms project. - -First create the WinForms project, to do that create a blank [Telerik UI for WinForms]({%slug winforms/visual-studio-templates%}) project and add a [RadGridView]({%slug winforms/gridview%}) and two buttons to it. The application design should look like this: - -![Telerik UI for WinForms AWS DynamoDB application layout with RadGridView and data management buttons](images/aws-dynamo-db001.png) - - -## Step 2: Install the NuGet package - -In Visual Studio open the NuGet package manager and install the **DynamoDB** module: - -![NuGet Package Manager installing the AWSSDK.DynamoDBv2 package for a Telerik UI for WinForms application](images/aws-dynamo-db002.png) - -Another option is to type the following command in the **NuGet Package Manager Console**: *PM> Install-Package AWSSDK.DynamoDBv2* - -In addition you need to add the following to your App.config file: - -````XML - - - - - - - - - -```` - ->tip If you do not have a AWS account in Visual Studio please check the [Getting Started]({%slug cloud-services/aws/getting-started%}) article. - -## Step 3: Create the AWS manager class - -Add a class called **AWS_Manager** to the example. You will use this class to add all functionality for managing the DynamoDB database. For now you can create the method that creates the table: - -````C# - -class AWS_Manager -{ - AmazonDynamoDBClient client; - public AWS_Manager() - { - try - { - client = new AmazonDynamoDBClient(); - } - catch (Exception ex) - { - RadMessageBox.Show("Error: failed to create a DynamoDB client; " + ex.Message); - } - } - - public void CreateTable() - { - List currentTables = client.ListTables().TableNames; - - if (!currentTables.Contains("Customers")) - { - CreateTableRequest createRequest = new CreateTableRequest - { - TableName = "Customers", - AttributeDefinitions = new List() - { - new AttributeDefinition - { - AttributeName = "Id", - AttributeType = "N" - }, - new AttributeDefinition - { - AttributeName = "Name", - AttributeType = "S" - } - }, - KeySchema = new List() - { - new KeySchemaElement - { - AttributeName = "Id", - KeyType = "HASH" - }, - new KeySchemaElement - { - AttributeName = "Name", - KeyType = "RANGE" - } - }, - }; - - createRequest.ProvisionedThroughput = new ProvisionedThroughput(1, 1); - - CreateTableResponse createResponse; - try - { - createResponse = client.CreateTable(createRequest); - } - catch (Exception ex) - { - RadMessageBox.Show("Error: failed to create the new table; " + ex.Message); - - return; - } - } - } -} -```` -````VB.NET -Friend Class AWS_Manager - Private client As AmazonDynamoDBClient - Public Sub New() - Try - client = New AmazonDynamoDBClient() - Catch ex As Exception - RadMessageBox.Show("Error: failed to create a DynamoDB client; " & ex.Message) - End Try - End Sub - - Public Sub CreateTable() - Dim currentTables As List(Of String) = client.ListTables().TableNames - - If Not currentTables.Contains("Customers") Then - Dim createRequest As CreateTableRequest = New CreateTableRequest With {.TableName = "Customers", .AttributeDefinitions = New List(Of AttributeDefinition)() _ - From { - New AttributeDefinition With { - .AttributeName = "Id", - .AttributeType = "N" - }, - New AttributeDefinition With { - .AttributeName = "Name", - .AttributeType = "S" - } - }, .KeySchema = New List(Of KeySchemaElement)() - From { - New KeySchemaElement With { - .AttributeName = "Id", - .KeyType = "HASH" - }, - New KeySchemaElement With { - .AttributeName = "Name", - .KeyType = "RANGE" - } - }} - - createRequest.ProvisionedThroughput = New ProvisionedThroughput(1, 1) - - Dim createResponse As CreateTableResponse - Try - createResponse = client.CreateTable(createRequest) - Catch ex As Exception - RadMessageBox.Show("Error: failed to create the new table; " & ex.Message) - - Return - End Try - End If - End Sub -End Class -```` - - -Now when the table is ready you can add some data, add the following method to the **AWS_Manager** class: - -````C# -public void AddData() -{ - Table table = Table.LoadTable(client, "Customers"); - if (table.Keys.Count == 0) - { - Document dataObj1 = new Document(); - dataObj1["Name"] = "Telerik"; - dataObj1["Id"] = 2; - dataObj1["Employees"] = 46; - dataObj1["State"] = "NY"; - table.PutItem(dataObj1); - - Document dataObj2 = new Document(); - dataObj2["Name"] = "Progress"; - dataObj2["Id"] = 13; - dataObj2["Employees"] = 54; - dataObj2["State"] = "IL"; - table.PutItem(dataObj2); - } -} -```` -````VB.NET -Public Sub AddData() - Dim table As Table = Table.LoadTable(client, "Customers") - If table.Keys.Count = 0 Then - Dim dataObj1 As New Document() - dataObj1("Name") = "Telerik" - dataObj1("Id") = 2 - dataObj1("Employees") = 46 - dataObj1("State") = "NY" - table.PutItem(dataObj1) - - Dim dataObj2 As New Document() - dataObj2("Name") = "Progress" - dataObj2("Id") = 13 - dataObj2("Employees") = 54 - dataObj2("State") = "IL" - table.PutItem(dataObj2) - End If -End Sub - -```` - - - -If you run the code at this point you will be able to see the data in your AWS console: - -![AWS DynamoDB console displaying sample customer records created by a Telerik UI for WinForms application](images/aws-dynamo-db003.png) - -## Step 4: Get the Data from DynamoDb - -Now you are ready to populate the grid with the data. Although you can directly populate the grid from the data I believe that is better to have a local business object to store the data. - -First you need to get the data. The following method will return a `List`, each document represents an entry from the database. - -````C# -public List GetData() -{ - Table table = Table.LoadTable(client, "Customers"); - ScanFilter scanFilter = new ScanFilter(); - ScanOperationConfig config = new ScanOperationConfig() - { - Filter = scanFilter, - Select = SelectValues.AllAttributes, - }; - Search search = table.Scan(config); - - List documentList = new List(); - do - { - documentList.AddRange(search.GetNextSet()); - - } while (!search.IsDone); - - return documentList; -} -```` -````VB.NET -Public Function GetData() As List(Of Document) - Dim table As Table = Table.LoadTable(client, "Customers") - Dim scanFilter As New ScanFilter() - Dim config As New ScanOperationConfig() With { - .Filter = scanFilter, - .Select = SelectValues.AllAttributes - } - Dim search As Search = table.Scan(config) - - Dim documentList As New List(Of Document)() - Do - documentList.AddRange(search.GetNextSet()) - - Loop While Not search.IsDone - - Return documentList -End Function -```` - -We can use the above method to iterate the documents and get the data. Here is the code along with the business object. - -````C# -private void radButton1_Click(object sender, EventArgs e) -{ - var data = manager.GetData(); - var gridData = new List(); - - foreach (Document doc in data) - { - var customer = new Customer(); - foreach (var attribute in doc.GetAttributeNames()) - { - var value = doc[attribute]; - if (attribute == "Id") - { - customer.Id = Convert.ToInt32(value.AsPrimitive().Value); - } - else if (attribute == "Name") - { - customer.Name = value.AsPrimitive().Value.ToString(); - } - else if (attribute == "Employees") - { - customer.Employees = Convert.ToInt32(value.AsPrimitive().Value); - } - else if (attribute == "State") - { - customer.State = value.AsPrimitive().Value.ToString(); - } - } - gridData.Add(customer); - } - radGridView1.DataSource = gridData; -} -class Customer -{ - public int Id { get; set; } - public string Name { get; set; } - - public int Employees { get; set; } - - public string State { get; set; } -} - -```` -````VB.NET -Private Sub radButton1_Click(ByVal sender As Object, ByVal e As EventArgs) - Dim data = manager.GetData() - Dim gridData = New List(Of Customer)() - - For Each doc As Document In data - Dim customer = New Customer() - For Each attribute In doc.GetAttributeNames() - Dim value = doc(attribute) - If attribute Is "Id" Then - customer.Id = Convert.ToInt32(value.AsPrimitive().Value) - ElseIf attribute Is "Name" Then - customer.Name = value.AsPrimitive().Value.ToString() - ElseIf attribute Is "Employees" Then - customer.Employees = Convert.ToInt32(value.AsPrimitive().Value) - ElseIf attribute Is "State" Then - customer.State = value.AsPrimitive().Value.ToString() - End If - Next attribute - gridData.Add(customer) - Next doc - radGridView1.DataSource = gridData -End Sub -Friend Class Customer - Public Property Id() As Integer - Public Property Name() As String - - Public Property Employees() As Integer - - Public Property State() As String -End Class -```` - -The grid is now populated. - -![aws-dynamo-db004](images/aws-dynamo-db004.png) - -## Step: 5 Save the Changes - -The final steps is to save the changes. Upon a button click we will iterate all rows and update the items in the database. We will need a function that updates an item in the manager class. Here is the code. - -````C# - -// Main form class -private void radButton2_Click(object sender, EventArgs e) -{ - foreach (GridViewDataRowInfo item in radGridView1.Rows) - { - manager.UpdateCustomerEntry(item.DataBoundItem as Customer); - } -} - -// AWS_Manager class -public void UpdateCustomerEntry(Customer customer) -{ - Table table = Table.LoadTable(client, "Customers"); - var entry = new Document(); - entry["Id"] = customer.Id; - entry["Name"] = customer.Name; - entry["Employees"] = customer.Employees; - entry["State"] = customer.State; - table.UpdateItem(entry); -} -```` -````VB.NET -' Main form class -Private Sub radButton2_Click(ByVal sender As Object, ByVal e As EventArgs) - For Each item As GridViewDataRowInfo In radGridView1.Rows - manager.UpdateCustomerEntry(TryCast(item.DataBoundItem, Customer)) - Next item -End Sub - -' AWS_Manager class -Public Sub UpdateCustomerEntry(ByVal customer As Customer) - Dim table As Table = Table.LoadTable(client, "Customers") - Dim entry = New Document() - entry("Id") = customer.Id - entry("Name") = customer.Name - entry("Employees") = customer.Employees - entry("State") = customer.State - table.UpdateItem(entry) -End Sub -```` - - -# See Also - -* [Relational Database Service]({%slug cloud-services/aws/rds%}) -* [Storage]({%slug cloud-services/aws/storage%}) -* [Simple Email Service]({%slug cloud-services/aws/ses%}) diff --git a/cloud-integration/aws/connect-to-data-in-the-cloud/images/aws-dynamo-db001.png b/cloud-integration/aws/connect-to-data-in-the-cloud/images/aws-dynamo-db001.png deleted file mode 100644 index 58bfd260b..000000000 Binary files a/cloud-integration/aws/connect-to-data-in-the-cloud/images/aws-dynamo-db001.png and /dev/null differ diff --git a/cloud-integration/aws/connect-to-data-in-the-cloud/images/aws-dynamo-db002.png b/cloud-integration/aws/connect-to-data-in-the-cloud/images/aws-dynamo-db002.png deleted file mode 100644 index d7d0f4c9a..000000000 Binary files a/cloud-integration/aws/connect-to-data-in-the-cloud/images/aws-dynamo-db002.png and /dev/null differ diff --git a/cloud-integration/aws/connect-to-data-in-the-cloud/images/aws-dynamo-db003.png b/cloud-integration/aws/connect-to-data-in-the-cloud/images/aws-dynamo-db003.png deleted file mode 100644 index 58a7531ad..000000000 Binary files a/cloud-integration/aws/connect-to-data-in-the-cloud/images/aws-dynamo-db003.png and /dev/null differ diff --git a/cloud-integration/aws/connect-to-data-in-the-cloud/images/aws-dynamo-db004.png b/cloud-integration/aws/connect-to-data-in-the-cloud/images/aws-dynamo-db004.png deleted file mode 100644 index beb8de4c1..000000000 Binary files a/cloud-integration/aws/connect-to-data-in-the-cloud/images/aws-dynamo-db004.png and /dev/null differ diff --git a/cloud-integration/aws/connect-to-data-in-the-cloud/images/aws-rds001.png b/cloud-integration/aws/connect-to-data-in-the-cloud/images/aws-rds001.png deleted file mode 100644 index b27e07182..000000000 Binary files a/cloud-integration/aws/connect-to-data-in-the-cloud/images/aws-rds001.png and /dev/null differ diff --git a/cloud-integration/aws/connect-to-data-in-the-cloud/images/aws-rds002.png b/cloud-integration/aws/connect-to-data-in-the-cloud/images/aws-rds002.png deleted file mode 100644 index c63ec69b1..000000000 Binary files a/cloud-integration/aws/connect-to-data-in-the-cloud/images/aws-rds002.png and /dev/null differ diff --git a/cloud-integration/aws/connect-to-data-in-the-cloud/images/aws-rds003.png b/cloud-integration/aws/connect-to-data-in-the-cloud/images/aws-rds003.png deleted file mode 100644 index c68385449..000000000 Binary files a/cloud-integration/aws/connect-to-data-in-the-cloud/images/aws-rds003.png and /dev/null differ diff --git a/cloud-integration/aws/connect-to-data-in-the-cloud/images/aws-rds004.png b/cloud-integration/aws/connect-to-data-in-the-cloud/images/aws-rds004.png deleted file mode 100644 index b2b436b08..000000000 Binary files a/cloud-integration/aws/connect-to-data-in-the-cloud/images/aws-rds004.png and /dev/null differ diff --git a/cloud-integration/aws/connect-to-data-in-the-cloud/images/aws-rds005.png b/cloud-integration/aws/connect-to-data-in-the-cloud/images/aws-rds005.png deleted file mode 100644 index 4ab5a823a..000000000 Binary files a/cloud-integration/aws/connect-to-data-in-the-cloud/images/aws-rds005.png and /dev/null differ diff --git a/cloud-integration/aws/connect-to-data-in-the-cloud/images/aws-rds006.png b/cloud-integration/aws/connect-to-data-in-the-cloud/images/aws-rds006.png deleted file mode 100644 index cdbc0bdb9..000000000 Binary files a/cloud-integration/aws/connect-to-data-in-the-cloud/images/aws-rds006.png and /dev/null differ diff --git a/cloud-integration/aws/connect-to-data-in-the-cloud/images/aws-rds008.png b/cloud-integration/aws/connect-to-data-in-the-cloud/images/aws-rds008.png deleted file mode 100644 index 6308e3d2c..000000000 Binary files a/cloud-integration/aws/connect-to-data-in-the-cloud/images/aws-rds008.png and /dev/null differ diff --git a/cloud-integration/aws/connect-to-data-in-the-cloud/rds.md b/cloud-integration/aws/connect-to-data-in-the-cloud/rds.md deleted file mode 100644 index ccde373fe..000000000 --- a/cloud-integration/aws/connect-to-data-in-the-cloud/rds.md +++ /dev/null @@ -1,219 +0,0 @@ ---- -title: RDS -page_title: RDS - WinForms Cloud Integration -description: Learn how you can use RDS with the Telerik UI For WinForms suite. Other cloud services like GoogleCloud, AWS, and Azure are also available. -slug: cloud-services/aws/rds -tags: amazon,cloud,rds -published: True -position: 1 ---- - -# Relational Database Service (RDS) - -This article will show you to create a WinForms application and access data stored in the cloud. - -It shows how you can connect to the __AWS RDS__ instance from a blank WinForms project as well. - -## Step 1: Setup a Database - -Go to the AWS console and click the RDS link and then click the __Get Started Now__. - -![AWS RDS console showing the start of database setup for a Telerik UI for WinForms application](images/aws-rds002.png) - -This will lead you to the **Select Engine** page. Select *SQL server Express Edition* and click Next. - -![AWS RDS Select Engine page with SQL Server Express selected for a Telerik UI for WinForms application](images/aws-rds003.png) - -On the next screen choose any options you want. For this example we are using the free tier options. Make sure that **Publicly Accessible** option is set to *Yes*. At the bottom of the page choose database name and specify the user name and password. - -![AWS RDS database configuration page for a Telerik UI for WinForms cloud integration application](images/aws-rds004.png) - -Click next and choose any options. Then click __Launch DB Instance__ and wait until the database is created. More information can be found [here](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_GettingStarted.CreatingConnecting.SQLServer.html). - - -At this point you are ready to connect to the instance using Microsoft SQL Server Management Studio. Detailed information is available [here](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_ConnectToMicrosoftSQLServerInstance.html). - -![SQL Server Management Studio connected to an AWS RDS database for a Telerik UI for WinForms application](images/aws-rds006.png) - - -## Step 2: Create a WinForms project. - -First create the WinForms project, to do that create a blank [Telerik UI for WinForms]({%slug winforms/visual-studio-templates%}) project and add a [RadGridView]({%slug winforms/gridview%}) and two buttons to it. The application design should look like this: - -![Telerik UI for WinForms AWS RDS application layout with RadGridView and data management buttons](images/aws-rds001.png) - -## Step 3: Install the NuGet package - -In Visual Studio open the NuGet package manager and install the RDS module: - -![NuGet Package Manager installing the AWS RDS package for a Telerik UI for WinForms application](images/aws-rds005.png) - -## Step 4: Connect from the application - -In this example we will use __Entity Framework__. In order to download Entity Framework you can follow this MSDN article - [Get Entity Framework](https://msdn.microsoft.com/en-us/data/ee712906.aspx) - -Now you will need a business object. In this example we will use the following class: - -````C# - -public class MoviesModel -{ - public int Id { get; set; } - - public string Name{ get; set; } - - public string Director { get; set; } - - public string YearOut { get; set; } -} -```` -````VB -Public Class MoviesModel - Public Property Id() As Integer - - Public Property Name() As String - - Public Property Director() As String - - Public Property YearOut() As String -End Class -```` - -The main part is creating a DbContext class. For this example you need to inherit the class and create a method that returns the connection string and a property that resembles the data. Here is a sample implementation: - -````C# - -public class RadGridViewMoviesContext : DbContext -{ - public RadGridViewMoviesContext() : base(GetRDSConnectionString()) - { - - } - - public static string GetRDSConnectionString() - { - string dbname = "Movies"; - if (string.IsNullOrEmpty(dbname)) return null; - - string username = "user"; - string password = "pass"; - string hostname = "sample-instance.************rds.amazonaws.com"; - string port = "1433"; - - return "Data Source=" + hostname + ";Initial Catalog=" + dbname + ";User ID=" + username + ";Password=" + password + ";"; - } - - public IDbSet Movies { get; set; } - public new IDbSet Set() where T : class - { - return base.Set(); - } -} - -```` -````VB.NET -Public Class RadGridViewMoviesContext - Inherits DbContext - - Public Sub New() - MyBase.New(GetRDSConnectionString()) - - End Sub - - Public Shared Function GetRDSConnectionString() As String - Dim dbname As String = "Movies" - If String.IsNullOrEmpty(dbname) Then - Return Nothing - End If - - Dim username As String = "user" - Dim password As String = "pass" - Dim hostname As String = "sample-instance.************rds.amazonaws.com" - Dim port As String = "1433" - - Return "Data Source=" & hostname & ";Initial Catalog=" & dbname & ";User ID=" & username & ";Password=" & password & ";" - End Function - - Public Property Movies() As IDbSet(Of MoviesModel) - Public Shadows Function [Set](Of T As Class)() As IDbSet(Of T) - Return MyBase.Set(Of T)() - End Function -End Class -```` - -Now you are ready to add some data: - -````C# - -RadGridViewMoviesContext dbContext = new RadGridViewMoviesContext(); - -dbContext.Movies.Add(new MoviesModel() { Director = "John Francis Daley", Id = 0, Name = "Game Night", YearOut = "2018" }); -dbContext.Movies.Add(new MoviesModel() { Director = "Will Gluck", Id = 0, Name = "Peter Rabbit", YearOut = "2018" }); - - -dbContext.SaveChanges(); - -```` -````VB.NET -Dim dbContext As New RadGridViewMoviesContext() - -dbContext.Movies.Add(New MoviesModel() With { - .Director = "John Francis Daley", - .Id = 0, - .Name = "Game Night", - .YearOut = "2018" -}) -dbContext.Movies.Add(New MoviesModel() With { - .Director = "Will Gluck", - .Id = 0, - .Name = "Peter Rabbit", - .YearOut = "2018" -}) - - -dbContext.SaveChanges() -```` - - -Once this is done you can bind the grid. - -````C# -private void loadDataButton_Click(object sender, EventArgs e) -{ - RadGridViewMoviesContext dbContext = new RadGridViewMoviesContext(); - dbContext.Movies.Load(); - this.radGridView1.DataSource = dbContext.Movies.Local.ToBindingList(); -} - -```` -````VB.NET -Private Sub loadDataButton_Click(ByVal sender As Object, ByVal e As EventArgs) - Dim dbContext As New RadGridViewMoviesContext() - dbContext.Movies.Load() - Me.radGridView1.DataSource = dbContext.Movies.Local.ToBindingList() -End Sub -```` - -Saving the data is easy just call the __SaveChanges__ method: - -````C# -private void saveDataButton_Click(object sender, EventArgs e) -{ - dbContext.SaveChanges(); -} -```` -````VB.NET -Private Sub saveDataButton_Click(ByVal sender As Object, ByVal e As EventArgs) - dbContext.SaveChanges() -End Sub -```` - -You can now view and edit the data from the grid: - -![Telerik UI for WinForms RadGridView displaying editable data loaded from an AWS RDS database](images/aws-rds008.png) - -# See Also - -* [DynamoDB]({%slug cloud-services/aws/dynamodb%}) -* [Storage]({%slug cloud-services/aws/storage%}) -* [Simple Email Service]({%slug cloud-services/aws/ses%}) \ No newline at end of file diff --git a/cloud-integration/aws/getting-started.md b/cloud-integration/aws/getting-started.md deleted file mode 100644 index b25b28571..000000000 --- a/cloud-integration/aws/getting-started.md +++ /dev/null @@ -1,61 +0,0 @@ ---- -title: Getting Started -page_title: Getting Started with AWS Cloud Services -description: Learn what are the main steps you need to take to setup your environment and start using AWS Cloud Services. -slug: cloud-services/aws/getting-started -tags: cloud, aws -published: True -position: 1 ---- - -# Getting Started - -This article will help you to setup your environment and start using AWS. Here are the main steps that you need to take: - -1. [Create an AWS account](#create-an-aws-account) -2. [Install the AWS SDK for .NET](#install-the-aws-sdk) -3. [Create a user](#creating-a-user) -4. [Enter the credentials in Visual Studio](#enter-credentials-in-visual-studio) - - -## Create an AWS account - -To create an account go to the [AWS website](https://aws.amazon.com/) and create new account. The process is straightforward and easy. You will be prompted for a credit card number despite that there is a free option. There is short automatic verification via phone as well. The whole process should not take more than 15 minutes. - -## Install the AWS SDK - -This is straightforward as well. Just [download the installer](https://aws.amazon.com/visualstudio/) and follow the instructions. Once this is done open Visual Studio. - ->tip There are 2 versions of the SDK for VS2013/VS2015 and VS2017. - -Now you should see the AWS start page: - -![AWS Toolkit for Visual Studio start page for a Telerik UI for WinForms cloud integration application](images/aws-getting-started001.png) - -## Creating a user - -In order to access the AWS services you need a user. The user management is actually a service. So navigate to the **Security, Identity & Compliance** and click the **IAM** link. - -![AWS Identity and Access Management page for creating a user for a Telerik UI for WinForms cloud integration application](images/aws-getting-started002.png) - -Click add new user and follow the instructions on the screen. There are 4 steps: - -![AWS IAM Add User wizard showing the user creation and permission steps for a Telerik UI for WinForms application](images/aws-getting-started003.png) - -1. Choose the name and access (programmatic and/or management console). -2. Choose permission policy - for the first user you can use any of the existing policies (the third icon). -3. Just confirm by pressing *Create User*. -4. This is a summary page which allows you to download the user details in a csv file. Click Download and save the file. You will import this in Visual Studio. - -## Enter credentials in Visual Studio - -This is the final step. If you do not see the AWS start page (see the first image) go to View - AWS Explorer. Click **Add New User** and import the csv file. - -![AWS Toolkit for Visual Studio dialog for importing user credentials into a Telerik UI for WinForms application](images/aws-getting-started004.png) - -# See Also - -* [DynamoDB]({%slug cloud-services/aws/dynamodb%}) -* [Relational Database Service]({%slug cloud-services/aws/rds%}) -* [Storage]({%slug cloud-services/aws/storage%}) -* [Simple Email Service]({%slug cloud-services/aws/ses%}) \ No newline at end of file diff --git a/cloud-integration/aws/images/aws-getting-started001.png b/cloud-integration/aws/images/aws-getting-started001.png deleted file mode 100644 index e08ec0c09..000000000 Binary files a/cloud-integration/aws/images/aws-getting-started001.png and /dev/null differ diff --git a/cloud-integration/aws/images/aws-getting-started002.png b/cloud-integration/aws/images/aws-getting-started002.png deleted file mode 100644 index 4f7ea1222..000000000 Binary files a/cloud-integration/aws/images/aws-getting-started002.png and /dev/null differ diff --git a/cloud-integration/aws/images/aws-getting-started003.png b/cloud-integration/aws/images/aws-getting-started003.png deleted file mode 100644 index 267728fa5..000000000 Binary files a/cloud-integration/aws/images/aws-getting-started003.png and /dev/null differ diff --git a/cloud-integration/aws/images/aws-getting-started004.png b/cloud-integration/aws/images/aws-getting-started004.png deleted file mode 100644 index 4b3046f1f..000000000 Binary files a/cloud-integration/aws/images/aws-getting-started004.png and /dev/null differ diff --git a/cloud-integration/aws/images/aws-overview001.png b/cloud-integration/aws/images/aws-overview001.png deleted file mode 100644 index f30fc1234..000000000 Binary files a/cloud-integration/aws/images/aws-overview001.png and /dev/null differ diff --git a/cloud-integration/aws/images/aws-s3-001.png b/cloud-integration/aws/images/aws-s3-001.png deleted file mode 100644 index 53cd79067..000000000 Binary files a/cloud-integration/aws/images/aws-s3-001.png and /dev/null differ diff --git a/cloud-integration/aws/images/aws-s3-002.png b/cloud-integration/aws/images/aws-s3-002.png deleted file mode 100644 index efd21c162..000000000 Binary files a/cloud-integration/aws/images/aws-s3-002.png and /dev/null differ diff --git a/cloud-integration/aws/images/aws-s3-003.png b/cloud-integration/aws/images/aws-s3-003.png deleted file mode 100644 index 32fd4ca43..000000000 Binary files a/cloud-integration/aws/images/aws-s3-003.png and /dev/null differ diff --git a/cloud-integration/aws/images/aws-ses001.png b/cloud-integration/aws/images/aws-ses001.png deleted file mode 100644 index f4d5f3450..000000000 Binary files a/cloud-integration/aws/images/aws-ses001.png and /dev/null differ diff --git a/cloud-integration/aws/images/aws-ses002.png b/cloud-integration/aws/images/aws-ses002.png deleted file mode 100644 index 70f72e18a..000000000 Binary files a/cloud-integration/aws/images/aws-ses002.png and /dev/null differ diff --git a/cloud-integration/aws/images/aws-ses003.png b/cloud-integration/aws/images/aws-ses003.png deleted file mode 100644 index 2067da11e..000000000 Binary files a/cloud-integration/aws/images/aws-ses003.png and /dev/null differ diff --git a/cloud-integration/aws/overview.md b/cloud-integration/aws/overview.md deleted file mode 100644 index 98d0085e8..000000000 --- a/cloud-integration/aws/overview.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -title: Overview -page_title: AWS (Amazon Web Services) Cloud Integration -description: Learn how you can use AWS with the Telerik UI For WinForms suite. Other cloud services like GoogleCloud, AWS, and Azure are also available. -slug: cloud-services/aws/overview -tags: aws,cloud -published: True -position: 0 ---- - -# AWS (Amazon Web Services) - -Amazon Web Services is a cloud platform that provides a wide range of cloud services. You can create a [free account](https://aws.amazon.com/free/?sc_channel=em&sc_campaign=wlcm&sc_publisher=aws&sc_medium=em_wlcm_3d&sc_detail=wlcm_3d&sc_content=other&sc_country=global&sc_geo=global&sc_category=mult&ref_=pe_1679150_261537980) that is available for a year and will allow you to explore the provided services. So do not hesitate to create a new account and explore the AWS and the examples from this section. - -![AWS cloud services overview for Telerik UI for WinForms integration](images/aws-overview001.png) - -Here are the currently available topics: - -+ [Getting Started]({%slug cloud-services/aws/getting-started%}) - -+ Connect to data in the cloud - - + [DynamoDB]({%slug cloud-services/aws/dynamodb%}) - - + [RDS]({%slug cloud-services/aws/rds%}) - -+ [Storage (S3)]({%slug cloud-services/aws/storage%}) - -+ [Simple Email Service]({%slug cloud-services/aws/ses%}) - - -## Prerequisites - -In order to build and run the examples from the articles you will need an active AWS account. Your system should have .NET Framework 3.5 or later and Visual Studio 2010 or later. In addition, we use the [AWS SDK for .NET](https://aws.amazon.com/sdk-for-net/), which provides everything you need in order to build your application using Visual Studio. You will need to set up a security profile for DynamoDB in Visual Studio. - -The [Getting Started]({%slug cloud-services/aws/getting-started%}) article shows how you can setup your environment. - - ->tip In order to see the codes of each region, please check out the [Amazon API Gateway](https://docs.aws.amazon.com/general/latest/gr/rande.html#apigateway_region) diff --git a/cloud-integration/aws/ses.md b/cloud-integration/aws/ses.md deleted file mode 100644 index 2adeb6ac3..000000000 --- a/cloud-integration/aws/ses.md +++ /dev/null @@ -1,120 +0,0 @@ ---- -title: Simple Email Services -page_title: Simple Email Service - WinForms Cloud Integration -description: Learn how you can use Simple Email Service with the Telerik UI For WinForms suite. Other cloud services like GoogleCloud, AWS, and Azure are also available. -slug: cloud-services/aws/ses -tags: cloud,aws -published: True -position: 4 - ---- - -# Simple Email Service - -Amazon SES is a email service that provides you with a way to send and receive emails using your own email addresses and domains. - -This article will demonstrate how one can use this service from a WinForms application and send an email to a specific address. - - -## Step 1: Create the WinForms Application - -First create a new [Telerik UI for WinForms]({%slug winforms/visual-studio-templates%}) application using the default template. Drop two labels, two text-boxes, a button, and a [RadRichTextBox]({%slug winforms/richtexteditor%}) editor on the form. Your layout should look like this: - -![Telerik UI for WinForms Simple Email Service application layout with RadRichTextBox, text boxes, labels, and a button](images/aws-ses001.png) - - -## Step 2: Add the SES assemblies - -Open the NuGet Package Manager and install the **AWSSDK Simple Email** package. - -![NuGet Package Manager installing the AWSSDK Simple Email package for a Telerik UI for WinForms application](images/aws-ses002.png) - -In addition you need to add the following to your App.config file: - -````XML - - - - - - - - - -```` - ->tip If you do not have an AWS account in Visual Studio please check the [Getting Started]({%slug cloud-services/aws/getting-started%}) article. - -## Step 3: Add the code to the application - -The following snippet shows how you can send a mail using the content from the previously added controls: - -````C# -private void radButton1_Click(object sender, EventArgs e) -{ - using (var client = new AmazonSimpleEmailServiceClient()) - { - var provider = new HtmlFormatProvider(); - var formattedContent = provider.Export(radRichTextEditorContent.Document); - - var sendRequest = new SendEmailRequest - { - Source = radTextBoxFrom.Text, - Destination = new Destination { ToAddresses = new List { radTextBoxTo.Text } }, - Message = new Amazon.SimpleEmail.Model.Message - { - Subject = new Content(radTextBoxSubject.Text), - Body = new Body { Text = new Content(formattedContent) } - } - }; - try - { - var response = client.SendEmail(sendRequest); - } - catch (Exception ex) - { - RadMessageBox.Show(ex.Message); - } - } -} -```` -````VB.NET -Private Sub radButton1_Click(ByVal sender As Object, ByVal e As EventArgs) - Using client = New AmazonSimpleEmailServiceClient() - Dim provider = New HtmlFormatProvider() - Dim formattedContent = provider.Export(radRichTextEditorContent.Document) - - Dim sendRequest = New SendEmailRequest With { - .Source = radTextBoxFrom.Text, - .Destination = New Destination With { - .ToAddresses = New List(Of String) From {radTextBoxTo.Text} - }, - .Message = New Amazon.SimpleEmail.Model.Message With { - .Subject = New Content(radTextBoxSubject.Text), - .Body = New Body With {.Text = New Content(formattedContent)} - } - } - Try - Dim response = client.SendEmail(sendRequest) - Catch ex As Exception - RadMessageBox.Show(ex.Message) - End Try - End Using -End Sub -```` - -## Step 4: Add verified email addresses - -Before using the application you must verify some email addresses. If you are using the test environment both sender and receiver addresses must be verified. This should be done from the AWS console. - -![AWS Simple Email Service console for verifying sender and recipient email addresses used by a Telerik UI for WinForms application](images/aws-ses003.png) - ->tip Please note that the addresses are verified for each region and the regions in the console and the application must be the same. - -After the addresses are added you are ready to test your application. - -# See Also - -* [DynamoDB]({%slug cloud-services/aws/dynamodb%}) -* [Relational Database Service]({%slug cloud-services/aws/rds%}) -* [Storage]({%slug cloud-services/aws/storage%}) \ No newline at end of file diff --git a/cloud-integration/aws/storage.md b/cloud-integration/aws/storage.md deleted file mode 100644 index 9b70969ff..000000000 --- a/cloud-integration/aws/storage.md +++ /dev/null @@ -1,181 +0,0 @@ ---- -title: Storage (S3) -page_title: Storage (S3) - WinForms Cloud Integration -description: Learn how you can use Storage (S3) with the Telerik UI For WinForms suite. Other cloud services like GoogleCloud, AWS, and Azure are also available. -slug: cloud-services/aws/storage -tags: cloud,aws,storage -published: True -position: 3 ---- - -# Storage (S3) - -The **Amazon Simple Storage Service** (Amazon S3) is storage service that allows you to upload any kind of data at any time, from anywhere. This article will demonstrate how one can use this service from a WinForms application and manage the uploaded files. - -## Step 1: Create the WinForms Application - -Create a standard [Telerik WinForms]({%slug winforms/visual-studio-templates%}) application and add 3 buttons and a [RadListView]({%slug winforms/listview%}) to it. The layout should look like this: - -![Telerik UI for WinForms Amazon S3 application layout with RadListView and file management buttons](images/aws-s3-001.png) - -## Step 2: Install the NuGet package - -Open the NuGet Package Manager and install the **AWSSDK.S3** package. - -![NuGet Package Manager installing the AWSSDK.S3 package for a Telerik UI for WinForms application](images/aws-s3-002.png) - -In addition you need to add the following to your App.config file: - -````XML - - - - - - - - - -```` - ->tip If you do not have an AWS account in Visual Studio please check the [Getting Started]({%slug cloud-services/aws/getting-started%}) article. - -## Step 3: Create the IAmazonS3 client - -Now you are ready to create the *IAmazonS3* client object. This object will be used later for managing the data. - -````C# - -string bucketName = "telerik1"; -IAmazonS3 client; -public RadForm1() -{ - InitializeComponent(); - client = new AmazonS3Client(); -} - -```` -````VB.NET -Private bucketName As String = "telerik1" -Private client As IAmazonS3 - -Public Sub New() - InitializeComponent() - client = New AmazonS3Client() -End Sub -```` - -The S3 API is intuitive and you just need to create a proper request. The following snippet shows the event handlers of all buttons. - -````C# - -private void listItems_Click(object sender, EventArgs e) -{ - var objects = client.ListObjects(bucketName); - - radListView1.Items.Clear(); - - foreach (S3Object item in objects.S3Objects) - { - radListView1.Items.Add(item.Key); - } -} - -private void UploadFileButton_Click(object sender, EventArgs e) -{ - OpenFileDialog choofdlog = new OpenFileDialog(); - choofdlog.Filter = "All Files (*.*)|*.*"; - choofdlog.FilterIndex = 1; - choofdlog.Multiselect = false; - - if (choofdlog.ShowDialog() == DialogResult.OK) - { - string sFileName = choofdlog.FileName; - PutObjectRequest request = new PutObjectRequest() - { - BucketName = bucketName, - Key = sFileName - }; - - PutObjectResponse response = client.PutObject(request); - } - -} - -private void deleteFileButton_Click(object sender, EventArgs e) -{ - if (radListView1.SelectedIndex <0) - { - RadMessageBox.Show("Please select an Item"); - return; - } - - string keyName = radListView1.SelectedItem.Text; - DeleteObjectRequest request = new DeleteObjectRequest() - { - BucketName = bucketName, - Key = keyName - }; - - client.DeleteObject(request); - -} -```` -````VB.NET -Private Sub listItems_Click(ByVal sender As Object, ByVal e As EventArgs) - Dim objects = client.ListObjects(bucketName) - - radListView1.Items.Clear() - - For Each item As S3Object In objects.S3Objects - radListView1.Items.Add(item.Key) - Next item -End Sub - -Private Sub UploadFileButton_Click(ByVal sender As Object, ByVal e As EventArgs) - Dim choofdlog As New OpenFileDialog() - choofdlog.Filter = "All Files (*.*)|*.*" - choofdlog.FilterIndex = 1 - choofdlog.Multiselect = False - - If choofdlog.ShowDialog() = DialogResult.OK Then - Dim sFileName As String = choofdlog.FileName - Dim request As New PutObjectRequest() With { - .BucketName = bucketName, - .Key = sFileName - } - - Dim response As PutObjectResponse = client.PutObject(request) - End If - -End Sub - -Private Sub deleteFileButton_Click(ByVal sender As Object, ByVal e As EventArgs) - If radListView1.SelectedIndex <0 Then - RadMessageBox.Show("Please select an Item") - Return - End If - - Dim keyName As String = radListView1.SelectedItem.Text - Dim request As New DeleteObjectRequest() With { - .BucketName = bucketName, - .Key = keyName - } - - client.DeleteObject(request) - -End Sub -```` - -That is all, now you are ready to start using the application. - -![Telerik UI for WinForms RadListView displaying files managed in Amazon S3 storage](images/aws-s3-003.png) - -# See Also - -* [DynamoDB]({%slug cloud-services/aws/dynamodb%}) -* [Relational Database Service]({%slug cloud-services/aws/rds%}) -* [Simple Email Service]({%slug cloud-services/aws/ses%}) - - - diff --git a/cloud-integration/azure/blob-storage.md b/cloud-integration/azure/blob-storage.md deleted file mode 100644 index 12d7ae267..000000000 --- a/cloud-integration/azure/blob-storage.md +++ /dev/null @@ -1,220 +0,0 @@ ---- -title: Blob Storage -page_title: Blob Storage - WinForms Cloud Integration -description: Learn how you can use Blob Storage with the Telerik UI For WinForms suite. Other cloud services like GoogleCloud, AWS, and Azure are also available. -slug: cloud-services/azure/blob-storage -tags: cloud,azure,storage -published: True -position: 3 ---- - - -# Blob Storage - -The Azure Blob Storage allows you to store any type of unstructured data: images, videos, audio, documents, and more. This article will show you how you can create a small application that allows you to manage the data uploaded to the storage. - - -## Step 1: Create the WinForms Application - -Create a standard [Telerik WinForms]({%slug winforms/visual-studio-templates%}) application and add 3 buttons and a [RadListView]({%slug winforms/listview%}) to it. The layout should look like this: - -![Telerik UI for WinForms Azure Blob Storage application layout with RadListView and file management buttons](images/azure-blob-storage-001.png) - -## Step 2: Install the NuGet package - -Open the NuGet Package Manager and install the **Windows.Azure.Storage** package. - -![NuGet Package Manager installing the Windows.Azure.Storage package for a Telerik UI for WinForms application](images/azure-blob-storage-002.png) - -## Step 3: Create the Storage Account Objects - -We will use the following objects in order to manage the storage. Add the following code to your form class. - -````C# -CloudStorageAccount storageAccount = null; -CloudBlobContainer cloudBlobContainer = null; -```` -```` VB.NET -Dim storageAccount As CloudStorageAccount = Nothing -Dim cloudBlobContainer As CloudBlobContainer = Nothing -```` - ->tip You can add the necessary namespaces by pressing __Ctrl + .__ - -## Step 4: Create a Storage Account - -The following article explains how you can create a storage account: [Create a Storage Account](https://docs.microsoft.com/en-us/azure/storage/common/storage-create-storage-account#create-a-storage-account). - -The process is straightforward and easy it should take no more than 10 minutes. Once this is completed you need to get the connection string. You can find it under the __Access Keys__ page. - -![Azure portal Access Keys page showing the storage account connection string for a Telerik UI for WinForms application](images/azure-blob-storage-003.png) - -When you have a connection string copy it to your application: - -````C# -string connectionString "your connection string form the account goes here"; -```` -```` VB.NET -String connectionString "your connection string form the account goes here" -```` - -You are ready to create a storage container and initialize the storage container. Add the following code. - -````C# -public RadForm1() -{ - InitializeComponent(); - this.CreateAccountObjects(); -} -public async void CreateAccountObjects() -{ - if (CloudStorageAccount.TryParse(connectionString, out storageAccount)) - { - CloudBlobClient cloudBlobClient = storageAccount.CreateCloudBlobClient(); - - cloudBlobContainer = cloudBlobClient.GetContainerReference("myFiles"); - if (cloudBlobContainer != null) - { - return; - } - //if the container do not exists create it. - cloudBlobContainer = cloudBlobClient.GetContainerReference("myFiles" + Guid.NewGuid().ToString()); - await cloudBlobContainer.CreateAsync(); - - BlobContainerPermissions permissions = new BlobContainerPermissions - { - PublicAccess = BlobContainerPublicAccessType.Blob - }; - await cloudBlobContainer.SetPermissionsAsync(permissions); - } -} -```` -```` VB.NET -Public Sub New() - InitializeComponent() - Me.CreateAccountObjects() -End Sub -Public Async Sub CreateAccountObjects() - If CloudStorageAccount.TryParse(connectionString, storageAccount) Then - Dim cloudBlobClient As CloudBlobClient = storageAccount.CreateCloudBlobClient() - - cloudBlobContainer = cloudBlobClient.GetContainerReference("myFiles") - If cloudBlobContainer IsNot Nothing Then - Return - End If - 'if the container do not exists create it. - cloudBlobContainer = cloudBlobClient.GetContainerReference("myFiles" & Guid.NewGuid().ToString()) - Await cloudBlobContainer.CreateAsync() - - Dim permissions As BlobContainerPermissions = New BlobContainerPermissions With {.PublicAccess = BlobContainerPublicAccessType.Blob} - Await cloudBlobContainer.SetPermissionsAsync(permissions) - End If -End Sub - -```` - -## Step 5: Add the handlers to manage the data. - -There is nothing complex in this example and the API is really intuitive. You just need to call the appropriate methods and you will easily get the results. - -````C# -private void radButtonListItems_Click(object sender, EventArgs e) -{ - ListItems(); -} -public void ListItems() -{ - radListView1.Items.Clear(); - - BlobContinuationToken blobContinuationToken = null; - do - { - var results = cloudBlobContainer.ListBlobsSegmented(null, blobContinuationToken); - - blobContinuationToken = results.ContinuationToken; - foreach (IListBlobItem item in results.Results) - { - radListView1.Items.Add(item.Uri); - } - } while (blobContinuationToken != null); -} -private async void radButtonUpload_ClickAsync(object sender, EventArgs e) -{ - OpenFileDialog dlg = new OpenFileDialog(); - if (dlg.ShowDialog() == DialogResult.OK) - { - string file = dlg.FileName; - CloudBlockBlob cloudBlockBlob = cloudBlobContainer.GetBlockBlobReference(Path.GetFileName(file)); - await cloudBlockBlob.UploadFromFileAsync(file); - ListItems(); - } -} - -private void radButtonDelete_Click(object sender, EventArgs e) -{ - if (radListView1.SelectedIndex != -1) - { - var fileName = radListView1.SelectedItem.Text; - var blob = this.cloudBlobContainer.GetBlockBlobReference(Path.GetFileName(fileName)); - var result = blob.DeleteIfExists(); - if (result == false) - { - RadMessageBox.Show("Cannot Find File"); - } - ListItems(); - } - -} -```` -```` VB.NET -Private Sub radButtonListItems_Click(ByVal sender As Object, ByVal e As EventArgs) - ListItems() -End Sub -Public Sub ListItems() - radListView1.Items.Clear() - - Dim blobContinuationToken As BlobContinuationToken = Nothing - Do - Dim results = cloudBlobContainer.ListBlobsSegmented(Nothing, blobContinuationToken) - - blobContinuationToken = results.ContinuationToken - For Each item As IListBlobItem In results.Results - radListView1.Items.Add(item.Uri) - Next item - Loop While blobContinuationToken IsNot Nothing -End Sub -Private Async Sub radButtonUpload_ClickAsync(ByVal sender As Object, ByVal e As EventArgs) - Dim dlg As New OpenFileDialog() - If dlg.ShowDialog() = DialogResult.OK Then - Dim file As String = dlg.FileName - Dim cloudBlockBlob As CloudBlockBlob = cloudBlobContainer.GetBlockBlobReference(Path.GetFileName(file)) - Await cloudBlockBlob.UploadFromFileAsync(file) - ListItems() - End If -End Sub - -Private Sub radButtonDelete_Click(ByVal sender As Object, ByVal e As EventArgs) - If radListView1.SelectedIndex <> -1 Then - Dim fileName = radListView1.SelectedItem.Text - Dim blob = Me.cloudBlobContainer.GetBlockBlobReference(Path.GetFileName(fileName)) - Dim result = blob.DeleteIfExists() - If result = False Then - RadMessageBox.Show("Cannot Find File") - End If - ListItems() - End If - -End Sub -```` - -You are now ready to manage the files in the cloud. - -![Telerik UI for WinForms RadListView displaying files managed in Azure Blob Storage](images/azure-blob-storage-004.png) - - -# See Also - -* [Cosmos DB]({%slug cloud-services/azure/cosmosdb%}) -* [Image Analysis]({%slug cloud-services/azure/image-analysis%}) -* [Text Analysis]({%slug cloud-services/azure/text-analysis%}) -* [SQL Database]({%slug cloud-services/azure/sql-database%}) \ No newline at end of file diff --git a/cloud-integration/azure/cognitive-services/image-analysis.md b/cloud-integration/azure/cognitive-services/image-analysis.md deleted file mode 100644 index d7f387faf..000000000 --- a/cloud-integration/azure/cognitive-services/image-analysis.md +++ /dev/null @@ -1,146 +0,0 @@ ---- -title: Image Analysis -page_title: Image Analysis - WinForms Cloud Integration -description: Learn how you can use Image Analysis with the Telerik UI For WinForms suite. Other cloud services like GoogleCloud, AWS, and Azure are also available. -slug: cloud-services/azure/image-analysis -tags: cloud,azure -published: True -position: 5 - ---- - -# Image Analysis - -This article will guide you through the process of integrating Azure's [Computer Vision API](https://azure.microsoft.com/en-us/services/cognitive-services/computer-vision/) with the controls from the UI for WinForms suite. You will be able to upload an image which will be analyzed by the service. - -## Step 1: Create a Computer Vision API Account - -Before creating the application, you need to create a new Computer Vision API account through the Azure portal. This is explained in great detail [here](https://docs.microsoft.com/en-us/azure/cognitive-services/cognitive-services-apis-create-account). - -![Azure portal Computer Vision API account creation for a Telerik UI for WinForms image analysis application.](images/azure-cognitive-services-image-analysis001.png) - -Once you've created the account, you have to obtain the subscription keys. You will need them later on in order to make API calls from your application. - -## Step 2: Add the Newtonsoft.Json NuGet Package - -Now add the **Newtonsoft.Json** NuGet package which will allow you to deserialize the returned result. - -You need to add a reference to **System.Net.Http** which holds the API required to make requests to the service's REST API as well. - -## Step 3: Create the Application - -Create a standard [Telerik WinForms]({%slug winforms/visual-studio-templates%}) application and add a button, a RadPanel, and a [RadChartView]({%slug winforms/chartview/overview%}) to it. The layout should look like this: - -![Telerik UI for WinForms application layout with a button, RadPanel, and RadChartView for Azure image analysis.](images/azure-cognitive-services-image-analysis002.png) - - -## Step 4: Add the Code Behind - -First add the following variables to the form: - -````C# -private static string subscriptionKey = "your own code"; -const string uriBase = "https://westeurope.api.cognitive.microsoft.com/vision/v1.0/analyze"; - - -```` - - -Then the code that makes the request along with the business object required for parsing the results (the results are returned in JSON format). - -````C# - -async Task MakeAnalysisRequest(string imageFilePath) -{ - HttpClient client = new HttpClient(); - client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", subscriptionKey); - - string requestParameters = "visualFeatures=Categories,Faces,Tags&language=en"; - - string uri = uriBase + "?" + requestParameters; - - HttpResponseMessage response; - - - byte[] byteData = GetImageAsByteArray(imageFilePath); - - using (ByteArrayContent content = new ByteArrayContent(byteData)) - { - content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream"); - response = await client.PostAsync(uri, content); - - return await response.Content.ReadAsStringAsync(); - } -} - -byte[] GetImageAsByteArray(string imageFilePath) -{ - FileStream fileStream = new FileStream(imageFilePath, FileMode.Open, FileAccess.Read); - BinaryReader binaryReader = new BinaryReader(fileStream); - return binaryReader.ReadBytes((int)fileStream.Length); -} - -public class ImageResponse -{ - public IList Categories { get; set; } - public IList Tags { get; set; } -} -public class Tag -{ - public string Name { get; set; } - public double Confidence { get; set; } -} - -public class Category -{ - public string Name { get; set; } - public double Score { get; set; } -} -```` - - -The final step is to handle the click event and show the image and the results. - -````C# -private async void radButtonUpload_Click(object sender, EventArgs e) -{ - OpenFileDialog dlg = new OpenFileDialog(); - - if (dlg.ShowDialog() == DialogResult.OK) - { - var result = await MakeAnalysisRequest(dlg.FileName); - var res = JsonConvert.DeserializeObject(result); - BarSeries series = new BarSeries(); - foreach (var item in res.Categories) - { - series.DataPoints.Add(new CategoricalDataPoint(item.Score * 100, item.Name)); - } - foreach (var item in res.Tags) - { - series.DataPoints.Add(new CategoricalDataPoint(item.Confidence * 100, item.Name)); - } - radChartView1.Series.Clear(); - radChartView1.Axes.Purge(); - radChartView1.Series.Add(series); - - var axis = radChartView1.Axes[0] as CategoricalAxis; - axis.LabelFitMode = AxisLabelFitMode.Rotate; - axis.LabelRotationAngle = 60; - - radPanel1.BackgroundImage = Image.FromFile(dlg.FileName).GetThumbnailImage(radPanel1.Width, radPanel1.Height, null, IntPtr.Zero); - } -} - -```` - - -That is all, you are ready to start and test the application. - -![Telerik UI for WinForms RadChartView showing Azure Computer Vision image analysis categories and tags.](images/azure-cognitive-services-image-analysis003.png) - -# See Also - -* [Cosmos DB]({%slug cloud-services/azure/cosmosdb%}) -* [SQL Database]({%slug cloud-services/azure/sql-database%}) -* [Text Analysis]({%slug cloud-services/azure/text-analysis%}) -* [Blob Storage]({%slug cloud-services/azure/blob-storage%}) \ No newline at end of file diff --git a/cloud-integration/azure/cognitive-services/images/azure-cognitive-services-image-analysis001.png b/cloud-integration/azure/cognitive-services/images/azure-cognitive-services-image-analysis001.png deleted file mode 100644 index d63ab86fb..000000000 Binary files a/cloud-integration/azure/cognitive-services/images/azure-cognitive-services-image-analysis001.png and /dev/null differ diff --git a/cloud-integration/azure/cognitive-services/images/azure-cognitive-services-image-analysis002.png b/cloud-integration/azure/cognitive-services/images/azure-cognitive-services-image-analysis002.png deleted file mode 100644 index 502049515..000000000 Binary files a/cloud-integration/azure/cognitive-services/images/azure-cognitive-services-image-analysis002.png and /dev/null differ diff --git a/cloud-integration/azure/cognitive-services/images/azure-cognitive-services-image-analysis003.png b/cloud-integration/azure/cognitive-services/images/azure-cognitive-services-image-analysis003.png deleted file mode 100644 index 9f4ecb4a9..000000000 Binary files a/cloud-integration/azure/cognitive-services/images/azure-cognitive-services-image-analysis003.png and /dev/null differ diff --git a/cloud-integration/azure/cognitive-services/images/azure-text-analysis001.png b/cloud-integration/azure/cognitive-services/images/azure-text-analysis001.png deleted file mode 100644 index 426ff3538..000000000 Binary files a/cloud-integration/azure/cognitive-services/images/azure-text-analysis001.png and /dev/null differ diff --git a/cloud-integration/azure/cognitive-services/images/azure-text-analysis002.png b/cloud-integration/azure/cognitive-services/images/azure-text-analysis002.png deleted file mode 100644 index 0021dac72..000000000 Binary files a/cloud-integration/azure/cognitive-services/images/azure-text-analysis002.png and /dev/null differ diff --git a/cloud-integration/azure/cognitive-services/images/azure-text-analysis003.png b/cloud-integration/azure/cognitive-services/images/azure-text-analysis003.png deleted file mode 100644 index cc96b2aa6..000000000 Binary files a/cloud-integration/azure/cognitive-services/images/azure-text-analysis003.png and /dev/null differ diff --git a/cloud-integration/azure/cognitive-services/images/azure-text-analysis004.png b/cloud-integration/azure/cognitive-services/images/azure-text-analysis004.png deleted file mode 100644 index 5509d5cbd..000000000 Binary files a/cloud-integration/azure/cognitive-services/images/azure-text-analysis004.png and /dev/null differ diff --git a/cloud-integration/azure/cognitive-services/text-analysis.md b/cloud-integration/azure/cognitive-services/text-analysis.md deleted file mode 100644 index eba808db7..000000000 --- a/cloud-integration/azure/cognitive-services/text-analysis.md +++ /dev/null @@ -1,89 +0,0 @@ ---- -title: Text Analysis -page_title: Text Analysis - WinForms Cloud Integration -description: Learn how you can use Text Analysis with the Telerik UI For WinForms suite. Other cloud services like GoogleCloud, AWS, and Azure are also available. -slug: cloud-services/azure/text-analysis -tags: cloud,azure -published: true -position: 5 - ---- - -# Text Analysis - -This article will guide you through the process of integrating Azure's [Text Analytics API](https://azure.microsoft.com/en-us/services/cognitive-services/text-analytics/) with the controls from the Telerik UI for WinForms suite. - -## Step 1: Create a Text Analytics API Account - -Before you start, you need to create a new Text Analytics API account through the Azure portal. This is explained in great detail [here](https://docs.microsoft.com/en-us/azure/cognitive-services/cognitive-services-apis-create-account). - -![Azure portal Text Analytics API account creation for a Telerik UI for WinForms text analysis application.](images/azure-text-analysis001.png) - -Once you've created the account, you have to obtain the subscription keys that were generated for you. You will require them later on in order to make API calls from your application. - -## Step 2: Create the Application - -Create a standard [Telerik WinForms]({%slug winforms/visual-studio-templates%}) application and add two [RadTextBoxes]({%slug winforms/editors/textbox%}) a [RadButton]({%slug winforms/buttons/button%}) three [RadLabels]({%slug winforms/panels-and-labels/label%}) and a [RadSpinEditor]({%slug winforms/editors/spineditor%}) to it. The layout should look like this: - -![Telerik UI for WinForms text analysis application layout with RadTextBoxes, RadButton, RadLabels, and a RadSpinEditor.](images/azure-text-analysis002.png) - -## Step 3: Add the Microsoft.Azure.CognitiveServices.Language NuGet Package - -You can now add the **Microsoft.Azure.CognitiveServices.Language** NuGet package corresponding which provides access to the Microsoft Cognitive Services Language APIs. - ->tip Mark the __Include Prerelease__ checkbox. - ->tip The package requires a .NET Framework version equal or higher than **4.5.2**. If you're using a lower version, you will need to call the HTTP endpoints directly from C# and serialize and deserialize the requests and responses similarly to the example found in the [Image Analysis]({%slug cloud-services/azure/image-analysis%}) article. - -![NuGet Package Manager installing the Microsoft.Azure.CognitiveServices.Language package for a Telerik UI for WinForms text analysis application.](images/azure-text-analysis003.png) - -## Step 4: Use the Text Analytics API - -The following code demonstrates how to handle the button's **Click** event and use the Text Analytics API to analyze the text input in the RadTextBox. - - -````C# -const string subscriptionKey = "Add your key here."; -public ITextAnalyticsAPI client; - -public RadForm1() -{ - InitializeComponent(); - client = new TextAnalyticsAPI(); - client.AzureRegion = AzureRegions.Westeurope; - client.SubscriptionKey = subscriptionKey; - -} -private async void MakeAnalysisRequest(string text) -{ - LanguageBatchResult languageResult = await client.DetectLanguageAsync( - new BatchInput(new List() { new Input("1", text) })); - - var language = languageResult.Documents.First().DetectedLanguages.First(); - - SentimentBatchResult sentimentResult = await client.SentimentAsync( - new MultiLanguageBatchInput(new List(){ - new MultiLanguageInput(language.Iso6391Name, "1", text) })); - - var sentiment = sentimentResult.Documents.First(); - - this.languageTextBox.Text = language.Name; - this.sentimentEditor.Value = (decimal)sentiment.Score.Value * 100; -} -private void radButton1_Click(object sender, EventArgs e) -{ - MakeAnalysisRequest(radTextBoxInput.Text); -} - -```` - -This is all, you are ready to test the application. - -![Telerik UI for WinForms text analysis application showing detected language and sentiment results.](images/azure-text-analysis004.png) - -# See Also - -* [Cosmos DB]({%slug cloud-services/azure/cosmosdb%}) -* [Image Analysis]({%slug cloud-services/azure/image-analysis%}) -* [SQL Database]({%slug cloud-services/azure/sql-database%}) -* [Blob Storage]({%slug cloud-services/azure/blob-storage%}) \ No newline at end of file diff --git a/cloud-integration/azure/connect-to-data-in-the-cloud/cosmos-db.md b/cloud-integration/azure/connect-to-data-in-the-cloud/cosmos-db.md deleted file mode 100644 index 87a639790..000000000 --- a/cloud-integration/azure/connect-to-data-in-the-cloud/cosmos-db.md +++ /dev/null @@ -1,245 +0,0 @@ ---- -title: CosmosDB -page_title: CosmosDB - WinForms Cloud Integration -description: Learn how you can use CosmosDB with the Telerik UI For WinForms suite. Other cloud services like GoogleCloud, AWS, and Azure are also available. -slug: cloud-services/azure/cosmosdb -tags: cloud,azure,cosmosdb -published: True -position: 0 - ---- - -# CosmosDB - -Azure Cosmos DB is a globally distributed, multi-model database service which enables you to develop document, key-value, wide-column, and graph databases by using popular APIs and programming models. This article will show you how to integrate the [RadGridView]({%slug winforms/visual-studio-templates%}) control to work with your remote database. - -This article shows the steps for creating a database along with the application that uses it. More detailed information about creating the database is available in the following tutorial: [SQL API Getting Started Tutorial](https://docs.microsoft.com/en-us/azure/cosmos-db/sql-api-get-started). - - -## Step 1: Create a WinForms project. - -First create the WinForms project, to do that create a blank [Telerik UI for WinForms]({%slug winforms/visual-studio-templates%}) project and add a [RadGridView]({%slug winforms/gridview%}) and two buttons to it. The application design should look like this: - -![Telerik UI for WinForms Azure Cosmos DB application layout with RadGridView and data management buttons](images/azure-cosmosdb001.png) - - -## Step 2: Install the NuGet package - -In Visual Studio open the NuGet package manager and install the **Microsoft.Azure.DocumentDB** module: - - -![NuGet Package Manager installing the Microsoft.Azure.DocumentDB package for a Telerik UI for WinForms application](images/azure-cosmosdb002.png) - -## Step 3: Create the Database - -Go to your Azure console, click **Create Resource** then select __Cosmos DB__ and populate the required information: -* ID - choose any name you want -* API - select SQL -* Resource Group - select __Create New__ and use the same name as your ID -* Enable geo-redundancy - leave blank - -![Azure portal Create Resource page for configuring a Cosmos DB account for a Telerik UI for WinForms application](images/azure-cosmosdb003.png) - - -## Step 4: Connect to an Azure Cosmos DB account - -First add the following namespaces: - -````C# -using System.Net; -using Microsoft.Azure.Documents; -using Microsoft.Azure.Documents.Client; -using Newtonsoft.Json; -```` -````VB.NET -Imports System.Net -Imports Microsoft.Azure.Documents -Imports Microsoft.Azure.Documents.Client -Imports Newtonsoft.Json -```` - -Add the following variables to the form's class: - -````C# -private const string EndpointUrl = ""; -private const string PrimaryKey = ""; -private DocumentClient client; -```` -````VB.NET -Private Const EndpointUrl As String = "" -Private Const PrimaryKey As String = "" -Private client As DocumentClient -```` - -You need to take the endpoint URL and primary key from the Azure Portal. In the Azure portal, navigate to your Azure Cosmos DB account, and then click Keys: - -![Azure Cosmos DB portal Keys page showing endpoint and primary key settings for a Telerik UI for WinForms application](images/azure-cosmosdb004.png) - - -Initialize the client in the and create the database. This can be done in the form's constructor: - -````C# -this.client = new DocumentClient(new Uri(EndpointUrl), PrimaryKey); -this.client.CreateDatabaseIfNotExistsAsync(new Database { Id = "EmployeeDB" }); -```` -````VB.NET -Me.client = New DocumentClient(New Uri(EndpointUrl), PrimaryKey) -Me.client.CreateDatabaseIfNotExistsAsync(New Database With {.Id = "EmployeeDB"}) -```` - ->important CreateDocumentCollectionIfNotExistsAsync will create a new collection with reserved throughput, which has pricing implications. - -## Step 5: Create JSON documents - -Documents are user defined (arbitrary) JSON content. We can now insert one or more documents. First, we need to create the class that will represent the business object: - -````C# -public class Employee -{ - [JsonProperty(PropertyName = "id")] - public string Id { get; set; } - public string Name { get; set; } - public string Company { get; set; } - public override string ToString() - { - return JsonConvert.SerializeObject(this); - } -} -```` -````VB.NET -Public Class Employee - - Public Property Id() As String - Public Property Name() As String - Public Property Company() As String - Public Overrides Function ToString() As String - Return JsonConvert.SerializeObject(Me) - End Function -End Class -```` - -Now we are ready to add some data. For this we need to add a collection first. Call the following code once from your application (from the add event handler for example): - -````C# -private async void AddData() -{ - var employee1 = new Employee() { Id = "1", Name = "John Smith", Company = "Progress" }; - var employee2 = new Employee() { Id = "2", Name = "Melanie Miller", Company = "Microsoft" }; - - await this.client.CreateDocumentCollectionIfNotExistsAsync(UriFactory.CreateDatabaseUri("EmployeeDB"), new DocumentCollection { Id = "EmployeeCollection" }); - await this.client.CreateDocumentAsync(UriFactory.CreateDocumentCollectionUri("EmployeeDB", "EmployeeCollection"), employee1); - await this.client.CreateDocumentAsync(UriFactory.CreateDocumentCollectionUri("EmployeeDB", "EmployeeCollection"), employee2); -} - -```` -````VB.NET -Private Async Sub AddData() - Dim employee1 = New Employee() With { - .Id = "1", - .Name = "John Smith", - .Company = "Progress" - } - Dim employee2 = New Employee() With { - .Id = "2", - .Name = "Melanie Miller", - .Company = "Microsoft" - } - - Await Me.client.CreateDocumentCollectionIfNotExistsAsync(UriFactory.CreateDatabaseUri("EmployeeDB"), New DocumentCollection With {.Id = "EmployeeCollection"}) - Await Me.client.CreateDocumentAsync(UriFactory.CreateDocumentCollectionUri("EmployeeDB", "EmployeeCollection"), employee1) - Await Me.client.CreateDocumentAsync(UriFactory.CreateDocumentCollectionUri("EmployeeDB", "EmployeeCollection"), employee2) -End Sub - -```` - -You should be able to see the data in the Azure console: - -![Azure Cosmos DB portal displaying sample employee documents created by a Telerik UI for WinForms application](images/azure-cosmosdb005.png) - - -## Step 6: Load the data in the grid - -The following snippet shows how you can get a list of object that can be used as data source for the grid: - -````C# -private void radButtonLoad_Click(object sender, EventArgs e) -{ - FeedOptions queryOptions = new FeedOptions { MaxItemCount = -1 }; - - IQueryable query = this.client.CreateDocumentQuery( - UriFactory.CreateDocumentCollectionUri("EmployeeDB", "EmployeeCollection"), queryOptions); - - radGridView1.DataSource = query.ToList(); -} -```` -````VB.NET -Private Sub radButtonLoad_Click(ByVal sender As Object, ByVal e As EventArgs) - Dim queryOptions As FeedOptions = New FeedOptions With {.MaxItemCount = -1} - - Dim query As IQueryable(Of Employee) = Me.client.CreateDocumentQuery(Of Employee)(UriFactory.CreateDocumentCollectionUri("EmployeeDB", "EmployeeCollection"), queryOptions) - - radGridView1.DataSource = query.ToList() -End Sub -```` - -Now you can see the data in the grid: - -![Telerik UI for WinForms RadGridView displaying employee data loaded from Azure Cosmos DB](images/azure-cosmosdb006.png) - -## Step 7: Save the data - -Our grid allows us to track any changes and this is why we can save them directly. In this case you will use the **RowsChanged** event to update the records in the database: - -````C# -private void RadGridView1_RowsChanged(object sender, Telerik.WinControls.UI.GridViewCollectionChangedEventArgs e) -{ - if (e.Action == Telerik.WinControls.Data.NotifyCollectionChangedAction.ItemChanged) - { - var item = e.NewItems[0] as GridViewDataRowInfo; - var employee = item.DataBoundItem as Employee; - this.client.ReplaceDocumentAsync(UriFactory.CreateDocumentUri("EmployeeDB", "EmployeeCollection", employee.Id), employee); - } - else if (e.Action == Telerik.WinControls.Data.NotifyCollectionChangedAction.Add) - { - var item = e.NewItems[0] as GridViewDataRowInfo; - var employee = item.DataBoundItem as Employee; - - this.client.CreateDocumentAsync(UriFactory.CreateDocumentCollectionUri("EmployeeDB", "EmployeeCollection"), employee); - } - else if (e.Action == Telerik.WinControls.Data.NotifyCollectionChangedAction.Remove) - { - var item = e.NewItems[0] as GridViewDataRowInfo; - var employee = item.DataBoundItem as Employee; - this.client.DeleteDocumentAsync(UriFactory.CreateDocumentUri("EmployeeDB", "EmployeeCollection", employee.Id)); - } -} - - -```` -````VB.NET -Private Sub RadGridView1_RowsChanged(ByVal sender As Object, ByVal e As Telerik.WinControls.UI.GridViewCollectionChangedEventArgs) - If e.Action = Telerik.WinControls.Data.NotifyCollectionChangedAction.ItemChanged Then - Dim item = TryCast(e.NewItems(0), GridViewDataRowInfo) - Dim employee = TryCast(item.DataBoundItem, Employee) - Me.client.ReplaceDocumentAsync(UriFactory.CreateDocumentUri("EmployeeDB", "EmployeeCollection", employee.Id), employee) - ElseIf e.Action = Telerik.WinControls.Data.NotifyCollectionChangedAction.Add Then - Dim item = TryCast(e.NewItems(0), GridViewDataRowInfo) - Dim employee = TryCast(item.DataBoundItem, Employee) - - Me.client.CreateDocumentAsync(UriFactory.CreateDocumentCollectionUri("EmployeeDB", "EmployeeCollection"), employee) - ElseIf e.Action = Telerik.WinControls.Data.NotifyCollectionChangedAction.Remove Then - Dim item = TryCast(e.NewItems(0), GridViewDataRowInfo) - Dim employee = TryCast(item.DataBoundItem, Employee) - Me.client.DeleteDocumentAsync(UriFactory.CreateDocumentUri("EmployeeDB", "EmployeeCollection", employee.Id)) - End If -End Sub -```` - -Now the changes made in the grid will be automatically reflected in the database. - -# See Also - -* [SQL Database]({%slug cloud-services/azure/sql-database%}) -* [Image Analysis]({%slug cloud-services/azure/blob-storage%}) -* [Text Analysis]({%slug cloud-services/azure/text-analysis%}) -* [Blob Storage]({%slug cloud-services/azure/blob-storage%}) diff --git a/cloud-integration/azure/connect-to-data-in-the-cloud/images/azure-cosmosdb001.png b/cloud-integration/azure/connect-to-data-in-the-cloud/images/azure-cosmosdb001.png deleted file mode 100644 index c72bef968..000000000 Binary files a/cloud-integration/azure/connect-to-data-in-the-cloud/images/azure-cosmosdb001.png and /dev/null differ diff --git a/cloud-integration/azure/connect-to-data-in-the-cloud/images/azure-cosmosdb002.png b/cloud-integration/azure/connect-to-data-in-the-cloud/images/azure-cosmosdb002.png deleted file mode 100644 index b859a2ebe..000000000 Binary files a/cloud-integration/azure/connect-to-data-in-the-cloud/images/azure-cosmosdb002.png and /dev/null differ diff --git a/cloud-integration/azure/connect-to-data-in-the-cloud/images/azure-cosmosdb003.png b/cloud-integration/azure/connect-to-data-in-the-cloud/images/azure-cosmosdb003.png deleted file mode 100644 index de4ac7a9f..000000000 Binary files a/cloud-integration/azure/connect-to-data-in-the-cloud/images/azure-cosmosdb003.png and /dev/null differ diff --git a/cloud-integration/azure/connect-to-data-in-the-cloud/images/azure-cosmosdb004.png b/cloud-integration/azure/connect-to-data-in-the-cloud/images/azure-cosmosdb004.png deleted file mode 100644 index 72d6cfd91..000000000 Binary files a/cloud-integration/azure/connect-to-data-in-the-cloud/images/azure-cosmosdb004.png and /dev/null differ diff --git a/cloud-integration/azure/connect-to-data-in-the-cloud/images/azure-cosmosdb005.png b/cloud-integration/azure/connect-to-data-in-the-cloud/images/azure-cosmosdb005.png deleted file mode 100644 index a642f86d5..000000000 Binary files a/cloud-integration/azure/connect-to-data-in-the-cloud/images/azure-cosmosdb005.png and /dev/null differ diff --git a/cloud-integration/azure/connect-to-data-in-the-cloud/images/azure-cosmosdb006.png b/cloud-integration/azure/connect-to-data-in-the-cloud/images/azure-cosmosdb006.png deleted file mode 100644 index 6a3109765..000000000 Binary files a/cloud-integration/azure/connect-to-data-in-the-cloud/images/azure-cosmosdb006.png and /dev/null differ diff --git a/cloud-integration/azure/connect-to-data-in-the-cloud/images/azure-sql001.png b/cloud-integration/azure/connect-to-data-in-the-cloud/images/azure-sql001.png deleted file mode 100644 index 5f7ebeccd..000000000 Binary files a/cloud-integration/azure/connect-to-data-in-the-cloud/images/azure-sql001.png and /dev/null differ diff --git a/cloud-integration/azure/connect-to-data-in-the-cloud/images/azure-sql002.png b/cloud-integration/azure/connect-to-data-in-the-cloud/images/azure-sql002.png deleted file mode 100644 index 7aef673c8..000000000 Binary files a/cloud-integration/azure/connect-to-data-in-the-cloud/images/azure-sql002.png and /dev/null differ diff --git a/cloud-integration/azure/connect-to-data-in-the-cloud/images/azure-sql003.png b/cloud-integration/azure/connect-to-data-in-the-cloud/images/azure-sql003.png deleted file mode 100644 index ad02cec48..000000000 Binary files a/cloud-integration/azure/connect-to-data-in-the-cloud/images/azure-sql003.png and /dev/null differ diff --git a/cloud-integration/azure/connect-to-data-in-the-cloud/images/azure-sql0032.png b/cloud-integration/azure/connect-to-data-in-the-cloud/images/azure-sql0032.png deleted file mode 100644 index c620c87e8..000000000 Binary files a/cloud-integration/azure/connect-to-data-in-the-cloud/images/azure-sql0032.png and /dev/null differ diff --git a/cloud-integration/azure/connect-to-data-in-the-cloud/images/azure-sql004.png b/cloud-integration/azure/connect-to-data-in-the-cloud/images/azure-sql004.png deleted file mode 100644 index 83ef3e4c0..000000000 Binary files a/cloud-integration/azure/connect-to-data-in-the-cloud/images/azure-sql004.png and /dev/null differ diff --git a/cloud-integration/azure/connect-to-data-in-the-cloud/images/azure-sql005.png b/cloud-integration/azure/connect-to-data-in-the-cloud/images/azure-sql005.png deleted file mode 100644 index 74b09cf90..000000000 Binary files a/cloud-integration/azure/connect-to-data-in-the-cloud/images/azure-sql005.png and /dev/null differ diff --git a/cloud-integration/azure/connect-to-data-in-the-cloud/images/azure-sql006.png b/cloud-integration/azure/connect-to-data-in-the-cloud/images/azure-sql006.png deleted file mode 100644 index b4cb73b7a..000000000 Binary files a/cloud-integration/azure/connect-to-data-in-the-cloud/images/azure-sql006.png and /dev/null differ diff --git a/cloud-integration/azure/connect-to-data-in-the-cloud/images/azure-sql007.png b/cloud-integration/azure/connect-to-data-in-the-cloud/images/azure-sql007.png deleted file mode 100644 index d28f7e767..000000000 Binary files a/cloud-integration/azure/connect-to-data-in-the-cloud/images/azure-sql007.png and /dev/null differ diff --git a/cloud-integration/azure/connect-to-data-in-the-cloud/images/azure-sql008.png b/cloud-integration/azure/connect-to-data-in-the-cloud/images/azure-sql008.png deleted file mode 100644 index 6b655e908..000000000 Binary files a/cloud-integration/azure/connect-to-data-in-the-cloud/images/azure-sql008.png and /dev/null differ diff --git a/cloud-integration/azure/connect-to-data-in-the-cloud/sql-database.md b/cloud-integration/azure/connect-to-data-in-the-cloud/sql-database.md deleted file mode 100644 index 94a32f435..000000000 --- a/cloud-integration/azure/connect-to-data-in-the-cloud/sql-database.md +++ /dev/null @@ -1,182 +0,0 @@ ---- -title: SQL Database -page_title: SQL Database - WinForms Cloud Integration -description: Learn how you can use SQL Database with the Telerik UI For WinForms suite. Other cloud services like GoogleCloud, AWS, and Azure are also available. -slug: cloud-services/azure/sql-database -tags: cloud,azure,sql -published: True -position: 1 - ---- - -# SQL Database - -This article will show you to create a WinForms application and access data stored in the cloud. - -It shows how you can connect to the __Azure SQL database__ instance from a blank WinForms project as well. - -## Step 1: Setup a Database - -Go to your Azure portal, then SQL Databases > Add, and fill all required information. - -![Azure portal creating an Azure SQL Database for a Telerik UI for WinForms data integration application.](images/azure-sql001.png) - -The process is fairly easy, however if you need detailed information you can check [this article](https://docs.microsoft.com/en-us/azure/sql-database/sql-database-get-started-portal). - ->important You will need to add a firewall rule for your IP Address. Otherwise you will be not able to connect. Detailed information is available [here](https://docs.microsoft.com/en-us/azure/sql-database/sql-database-get-started-portal#create-a-server-level-firewall-rule). - -## Step 2: Create the Table - -Once the database is created you can connect from Microsoft SQL server Management Studio. You need to take the server name from the database overview page in the azure portal. Use the name and password from step 1. - -![SQL Server Management Studio connecting to an Azure SQL Database for a Telerik UI for WinForms application.](images/azure-sql002.png) - -Once you are connected you can interact like with any other database. For this example execute the following query in order to create a table. - -````SQL -CREATE TABLE Movies ( - ID int, - Name varchar(255), - Director varchar(255), - YearOut varchar(255), -); -```` - -## Step 3: Creating the Winforms Application - -First create the WinForms project, to do that create a blank [Telerik UI for WinForms]({%slug winforms/visual-studio-templates%}) project and add a [RadGridView]({%slug winforms/gridview%}) and two buttons to it. The application design should look like this: - -![Telerik UI for WinForms application layout with a RadGridView and buttons for Azure SQL Database integration.](images/azure-sql0032.png) - -## Step 4: Create Entity Framework Model. - -1. Install the Entity Framework from the Nuget manager. - ![NuGet Package Manager installing Entity Framework for a Telerik UI for WinForms Azure SQL Database project.](images/azure-sql004.png) - -1. Add a new item to your project and choose **ADO.NET Entity Data Model** from the list of available items. - ![Add New Item dialog selecting ADO.NET Entity Data Model in a Telerik UI for WinForms project.](images/azure-sql005.png) - -1. Choose __Code First__ from database from the __Choose Model Contents__ dialog. - ![Choose Model Contents dialog selecting Code First from database for Azure SQL in a Telerik UI for WinForms project.](images/azure-sql006.png). - -1. Click on New Connection... and input the server name and credentials which you can obtain from the Azure portal. Choose the SQL Server Authentication option to log on to the server. - -1. Choose whether or not to include the sensitive data in the connection string, choose a name for it and click Next. - -1. Pick the database object you wish to include and click Finish. - ![Entity Data Model Wizard selecting Azure SQL database objects for a Telerik UI for WinForms application.](images/azure-sql007.png). - -## Step 5: Define the Context Object - -Entity Framework will create the context object but you need to modify it and include the business object. Your code should look like this: - -````C# -public partial class MoviesModel : DbContext -{ - public MoviesModel() - : base("name=MoviesModel") - { - } - - - protected override void OnModelCreating(DbModelBuilder modelBuilder) - { - } - public IDbSet Movies { get; set; } - public new IDbSet Set() where T : class - { - return base.Set(); - } -} -public class Movie -{ - public int ID { get; set; } - - public string Name { get; set; } - - public string Director { get; set; } - - public string YearOut { get; set; } -} -```` -```` VB.NET -Partial Public Class MoviesModel - Inherits DbContext - - Public Sub New() - MyBase.New("name=MoviesModel") - End Sub - - - Protected Overrides Sub OnModelCreating(ByVal modelBuilder As DbModelBuilder) - End Sub - Public Property Movies() As IDbSet(Of Movie) - Public Shadows Function [Set](Of T As Class)() As IDbSet(Of T) - Return MyBase.Set(Of T)() - End Function -End Class -Public Class Movie - Public Property ID() As Integer - - Public Property Name() As String - - Public Property Director() As String - - Public Property YearOut() As String -End Class - -```` - -The final step is to create a context object which will allow you to load and save the data. - -````C# -MoviesModel dbContext; -public RadForm1() -{ - InitializeComponent(); - dbContext = new MoviesModel(); -} - -private void radButtonLoad_Click(object sender, EventArgs e) -{ - dbContext.Movies.Load(); - radGridView1.DataSource = dbContext.Movies.Local.ToBindingList(); -} - -private void radButtonSave_Click(object sender, EventArgs e) -{ - dbContext.SaveChanges(); -} - -```` -```` VB.NET -Private dbContext As MoviesModel - -Public Sub New() - InitializeComponent() - dbContext = New MoviesModel() -End Sub - -Private Sub radButtonLoad_Click(ByVal sender As Object, ByVal e As EventArgs) - dbContext.Movies.Load() - radGridView1.DataSource = dbContext.Movies.Local.ToBindingList() -End Sub - -Private Sub radButtonSave_Click(ByVal sender As Object, ByVal e As EventArgs) - dbContext.SaveChanges() -End Sub - -```` - -Now you can manage the data directly in the grid. - -![Telerik UI for WinForms RadGridView displaying editable data loaded from Azure SQL Database.](images/azure-sql008.png) - - - -# See Also - -* [Cosmos DB]({%slug cloud-services/azure/cosmosdb%}) -* [Image Analysis]({%slug cloud-services/azure/image-analysis%}) -* [Text Analysis]({%slug cloud-services/azure/text-analysis%}) -* [Blob Storage]({%slug cloud-services/azure/blob-storage%}) \ No newline at end of file diff --git a/cloud-integration/azure/getting-started.md b/cloud-integration/azure/getting-started.md deleted file mode 100644 index f9c18367a..000000000 --- a/cloud-integration/azure/getting-started.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -title: Getting Started -page_title: Getting Started with Azure Cloud Services -description: Learn what are the main steps you need to take to setup your environment and start using Azure. -slug: cloud-services/azure/getting-started -tags: cloud,azure -published: True -position: 1 - ---- - -# Microsoft Azure - -To get started using **Microsoft Azure**, you will need to create a new account. You can choose to get a free trial account the benefits of which are listed [here](https://azure.microsoft.com/en-us/free/). Then, based on your needs, you need to create a separate account for the different services. - ->tip You will need to enter a credit card number even for free account. - - -# Choose the Desired Service - -Here are the services that will be demonstrated in combination with the controls from the UI for WinForms suite in this section: - -* [Blob storage](https://docs.microsoft.com/en-us/azure/storage/common/storage-create-storage-account) service demonstrated in the [Blob Storage]({%slug cloud-services/azure/blob-storage%}) article. - -* [Image Analysis](https://azure.microsoft.com/en-us/services/cognitive-services/computer-vision/) service demonstrated in the [Image Analysis]({%slug cloud-services/azure/image-analysis%}) article. - -* [Text Analysis](https://azure.microsoft.com/en-us/services/cognitive-services/text-analytics/) service demonstrated in the [Image Analysis]({%slug cloud-services/azure/text-analysis%}) article. - -* [SQL Database](https://docs.microsoft.com/en-us/azure/sql-database/) service demonstrated in the [SQL Database]({%slug cloud-services/azure/sql-database%}) article. - -* [Cosmos DB](https://docs.microsoft.com/en-us/azure/cosmos-db/introduction) service demonstrated in the [Cosmos DB]({%slug cloud-services/azure/cosmosdb%}) article. - -# See Also - -* [Cosmos DB]({%slug cloud-services/azure/cosmosdb%}) -* [Image Analysis]({%slug cloud-services/azure/image-analysis%}) -* [Text Analysis]({%slug cloud-services/azure/text-analysis%}) -* [Blob Storage]({%slug cloud-services/azure/blob-storage%}) -* [SQL Database]({%slug cloud-services/azure/sql-database%}) \ No newline at end of file diff --git a/cloud-integration/azure/images/azure-blob-storage-001.png b/cloud-integration/azure/images/azure-blob-storage-001.png deleted file mode 100644 index 088fe6d1c..000000000 Binary files a/cloud-integration/azure/images/azure-blob-storage-001.png and /dev/null differ diff --git a/cloud-integration/azure/images/azure-blob-storage-002.png b/cloud-integration/azure/images/azure-blob-storage-002.png deleted file mode 100644 index 61c2e81d6..000000000 Binary files a/cloud-integration/azure/images/azure-blob-storage-002.png and /dev/null differ diff --git a/cloud-integration/azure/images/azure-blob-storage-003.png b/cloud-integration/azure/images/azure-blob-storage-003.png deleted file mode 100644 index ad8f1989a..000000000 Binary files a/cloud-integration/azure/images/azure-blob-storage-003.png and /dev/null differ diff --git a/cloud-integration/azure/images/azure-blob-storage-004.png b/cloud-integration/azure/images/azure-blob-storage-004.png deleted file mode 100644 index bb4c18bde..000000000 Binary files a/cloud-integration/azure/images/azure-blob-storage-004.png and /dev/null differ diff --git a/cloud-integration/azure/images/azure-overview001.png b/cloud-integration/azure/images/azure-overview001.png deleted file mode 100644 index 50515d88e..000000000 Binary files a/cloud-integration/azure/images/azure-overview001.png and /dev/null differ diff --git a/cloud-integration/azure/overview.md b/cloud-integration/azure/overview.md deleted file mode 100644 index 1719d2295..000000000 --- a/cloud-integration/azure/overview.md +++ /dev/null @@ -1,35 +0,0 @@ ---- -title: Overview -page_title: Azure Cloud Integration -description: Learn how one can use the Azure in a Telerik UI for WinForms application. -slug: cloud-services/azure/overview -tags: cloud,azure -published: True -position: 0 ---- - -# Azure Overview - -**Microsoft Azure** is a cloud computing service created by Microsoft for building, testing, deploying, and managing applications and services through a global network of Microsoft-managed data centers. It provides software as a service (SaaS), platform as a service (PaaS) and infrastructure as a service (IaaS) and supports many different programming languages, tools and frameworks, including both Microsoft-specific and third-party software and systems. - -![Microsoft Azure cloud services overview for Telerik UI for WinForms integration](images/azure-overview001.png) - -You can create a free account and take advantage of a number of free services such as CosmosDB, Blob/File Storage, serverless functions and many more. This section shows how you can integrate them with the controls from the __Telerik UI for WinForms__ suite. - - -Here are the currently available topics: - -* [Getting Started]({%slug cloud-services/azure/getting-started%}) -* [Blob Storage]({%slug cloud-services/azure/blob-storage%}) - -* Connect to Data in the Cloud - - * [Cosmos DB]({%slug cloud-services/azure/cosmosdb%}) - - * [SQL Database]({%slug cloud-services/azure/sql-database%}) - -* Cognitive Services - - * [Image Analysis]({%slug cloud-services/azure/image-analysis%}) - - * [Text Analysis]({%slug cloud-services/azure/text-analysis%}) \ No newline at end of file diff --git a/cloud-integration/google-cloud/datastore-nosql.md b/cloud-integration/google-cloud/datastore-nosql.md deleted file mode 100644 index 13869ecca..000000000 --- a/cloud-integration/google-cloud/datastore-nosql.md +++ /dev/null @@ -1,244 +0,0 @@ ---- -title: Datastore(NoSQL database) -page_title: Datastore(NoSQL database) - WinForms Cloud Integration -description: Learn how you can use Datastore(NoSQL database) with the Telerik UI For WinForms suite. Other cloud services like -slug: common-google-cloud-datastore-nosql -position: 2 ---- - -# Datastore (NoSQL database) - -Cloud Datastore is a highly-scalable NoSQL database which Google promotes for scenarios that require high-availability and durability, and is capable of multiple features such as ACID transactions, SQL-like queries, indexes and many more. This in combination with the characteristic for the NoSQL database solutions of being able to handle different data types, great scalability and the great performance makes it a choice you should have in mind when considering the architecture of your application. - - -# Step 1: Create the Application - -First create the WinForms project, to do that create a blank [Telerik UI for WinForms]({%slug winforms/visual-studio-templates%}) project and add a [RadGridView]({%slug winforms/gridview%}) and a button to it. The application design should look like this: - -![Telerik UI for WinForms application layout with a RadGridView and button for Google Cloud Datastore integration.](images/google_cloud_nosql001.png) - -# Step 2: Create the Database - -The following tutorial shows how you can create the **Datastore** instance - [Datastore Quickstart](https://cloud.google.com/datastore/docs/quickstart). - -The process is straightforward and easy. You need to add some data as well. When ready your database should look like this. - -![Google Cloud Datastore database populated with sample data for a Telerik UI for WinForms application.](images/google_cloud_nosql002.png) - -## Step 3: Install the NuGet package. - -In order to use the classes needed for manipulating the database, you need to install the __Google.Cloud.DataStore.V1__ NuGet package. It can be found on Nuget's official package source server. - -![NuGet Package Manager installing the Google.Cloud.Datastore.V1 package for a Telerik UI for WinForms application.](images/google_cloud_nosql003.png) - -## Step 4: Connect from the Application - -Once you have the library installed, modifying the database is very straightforward. Here is how you set up a connection to your NoSql database: - -````C# -DatastoreDb db; -public RadForm1() -{ - InitializeComponent(); - - string projectId = "natural-oxygen-200712"; - db = DatastoreDb.Create(projectId); -} -```` -````VB.NET -Private db As DatastoreDb - -Public Sub New() - InitializeComponent() - - Dim projectId As String = "natural-oxygen-200712" - db = DatastoreDb.Create(projectId) -End Sub - -```` - ->important This would not work if you have not added the __GOOGLE_APPLICATION_CREDENTIALS__ environment variable. This variable should point to your JSON credential file. - -As a first step, you need to create the business object. Here is an example: - -````C# -public class Book -{ - public Key Key { get; set; } - public string Name { get; set; } - public string Author { get; set; } - public DateTime Published { get; set; } - -} - -```` -````VB.NET -Public Class Book - Public Property Key() As Key - Public Property Name() As String - Public Property Author() As String - Public Property Published() As Date - -End Class -```` - -Now you can use the above object to store the data from the database. The following code shows how you can retrieve the data: - -````C# -private void radButtonLoad_Click(object sender, EventArgs e) -{ - radGridView1.DataSource = GetBooks(); -} -public List GetBooks() -{ - List books = new List(); - Query query = new Query("Books"); - - DatastoreQueryResults tasks = db.RunQuery(query); - - foreach (var entity in tasks.Entities) - { - Book book = new Book(); - book.Author = (string)entity["Author"]; - book.Name = (string)entity["Name"]; - book.Published = (DateTime)entity["Published"]; - book.Key = entity.Key; - books.Add(book); - } - return books; -} - -```` -````VB.NET -Private Sub radButtonLoad_Click(ByVal sender As Object, ByVal e As EventArgs) - radGridView1.DataSource = GetBooks() -End Sub -Public Function GetBooks() As List(Of Book) - Dim books As New List(Of Book)() - Dim query As New Query("Books") - - Dim tasks As DatastoreQueryResults = db.RunQuery(query) - - For Each entity In tasks.Entities - Dim book As New Book() - book.Author = CStr(entity("Author")) - book.Name = CStr(entity("Name")) - book.Published = CDate(entity("Published")) - book.Key = entity.Key - books.Add(book) - Next entity - Return books -End Function -```` - -Now you can view the data in your application: - -![Telerik UI for WinForms RadGridView displaying data loaded from Google Cloud Datastore.](images/google_cloud_nosql004.png) - -## Step 5: Update the database. - -A proper place to handle and save any changes is the __RowsChanged__ event. This way you will be able to handle the add, remove and edit operations. The main part is that you need to keep the key of the entity object in order to get the existing items from the database. - -````C# -private void RadGridView1_RowsChanged(object sender, Telerik.WinControls.UI.GridViewCollectionChangedEventArgs e) -{ - if (e.Action == Telerik.WinControls.Data.NotifyCollectionChangedAction.Add) - { - Book newBook = ((GridViewDataRowInfo)e.NewItems[0]).DataBoundItem as Book; - - string kind = "Books"; - string name = "samplebook1"; - KeyFactory keyFactory = db.CreateKeyFactory(kind); - Key key = keyFactory.CreateKey(name); - - var item = new Entity - { - Key = key, - ["Author"] = newBook.Author, - ["Published"] = newBook.Published.ToUniversalTime(), - ["Name"] = newBook.Name - - }; - using (DatastoreTransaction transaction = db.BeginTransaction()) - { - transaction.Upsert(item); - transaction.Commit(); - } - } - else if (e.Action == Telerik.WinControls.Data.NotifyCollectionChangedAction.Remove) - { - Query query = new Query("Books"); - - DatastoreQueryResults tasks = db.RunQuery(query); - var book = ((GridViewDataRowInfo)e.NewItems[0]).DataBoundItem as Book; - - Entity itemToDelete = db.Lookup(book.Key); - - if (itemToDelete != null) - { - db.Delete(itemToDelete); - } - } - else if (e.Action == Telerik.WinControls.Data.NotifyCollectionChangedAction.ItemChanged) - { - var book = ((GridViewDataRowInfo)e.NewItems[0]).DataBoundItem as Book; - Entity editedItem = db.Lookup(book.Key); - - editedItem["Author"] = book.Author; - editedItem["Published"] = book.Published.ToUniversalTime(); - editedItem["Name"] = book.Name; - db.Update(editedItem); - } -} - -```` -````VB.NET -Private Sub RadGridView1_RowsChanged(ByVal sender As Object, ByVal e As Telerik.WinControls.UI.GridViewCollectionChangedEventArgs) - If e.Action = Telerik.WinControls.Data.NotifyCollectionChangedAction.Add Then - Dim newBook As Book = TryCast(CType(e.NewItems(0), GridViewDataRowInfo).DataBoundItem, Book) - - Dim kind As String = "Books" - Dim name As String = "samplebook1" - Dim keyFactory As KeyFactory = db.CreateKeyFactory(kind) - Dim key As Key = keyFactory.CreateKey(name) - - Dim item = New Entity With { - .Key = key, - ("Author") = newBook.Author, - ("Published") = newBook.Published.ToUniversalTime(), - ("Name") = newBook.Name - } - Using transaction As DatastoreTransaction = db.BeginTransaction() - transaction.Upsert(item) - transaction.Commit() - End Using - ElseIf e.Action = Telerik.WinControls.Data.NotifyCollectionChangedAction.Remove Then - Dim query As New Query("Books") - - Dim tasks As DatastoreQueryResults = db.RunQuery(query) - Dim book = TryCast(CType(e.NewItems(0), GridViewDataRowInfo).DataBoundItem, Book) - - Dim itemToDelete As Entity = db.Lookup(book.Key) - - If itemToDelete IsNot Nothing Then - db.Delete(itemToDelete) - End If - ElseIf e.Action = Telerik.WinControls.Data.NotifyCollectionChangedAction.ItemChanged Then - Dim book = TryCast(CType(e.NewItems(0), GridViewDataRowInfo).DataBoundItem, Book) - Dim editedItem As Entity = db.Lookup(book.Key) - - editedItem("Author") = book.Author - editedItem("Published") = book.Published.ToUniversalTime() - editedItem("Name") = book.Name - db.Update(editedItem) - End If -End Sub -```` - - -## See Also - -* [Getting Started]({%slug cloud-integration-google-getting-started%}) -* [Storage]({%slug common-google-cloud-storage%}) -* [Translation]({%slug common-google-cloud-translation%}) - \ No newline at end of file diff --git a/cloud-integration/google-cloud/getting-started.md b/cloud-integration/google-cloud/getting-started.md deleted file mode 100644 index f70f70090..000000000 --- a/cloud-integration/google-cloud/getting-started.md +++ /dev/null @@ -1,35 +0,0 @@ ---- -title: Getting Started -page_title: Getting Started with Google Cloud Services -description: Learn what are the main steps you need to take to setup your environment and start using Google Cloud. -slug: cloud-integration-google-getting-started -tags: cloud,integration,google,getting,started -published: True -position: 1 ---- - -# Getting Started - -This article will help you get started using Google Cloud Services. Here are the main steps that you need to take: - -1. [Create a Google Cloud account](#create-a-google-cloud-account) -2. [Enable the APIs that you want to use](#enable-the-apis-that-you-want-to-use) - -## Create a Google Cloud Account - -To create an account, go to the [Google Cloud website](https://cloud.google.com/free/) and create a new account. The process is straightforward and easy. You will be prompted for a credit card number despite that there is a free option. - -## Enable the APIs that you want to use - -In order to access all of the provided APIs, first you have to enable them from the [Google Cloud's console](https://console.cloud.google.com). For more information about that please visit the [Enable and disable APIs](https://support.google.com/cloud/answer/6158841?hl=en) article. - -![Google Cloud API Library showing available APIs for a Telerik UI for WinForms cloud integration application](images/google-cloud-api-library001.png) - ->important In order to automatically authenticate your application you need to add the __GOOGLE_APPLICATION_CREDENTIALS__ environment variable. It must point to the JSON file that contains the license information. This file is can be obtained by creating a [service account](https://cloud.google.com/docs/authentication/). -> - -## See Also - -* [Datastore]({%slug common-google-cloud-datastore-nosql%}) -* [Storage]({%slug common-google-cloud-storage%}) -* [Translation]({%slug common-google-cloud-translation%}) \ No newline at end of file diff --git a/cloud-integration/google-cloud/images/google-cloud-api-library001.png b/cloud-integration/google-cloud/images/google-cloud-api-library001.png deleted file mode 100644 index 25051660b..000000000 Binary files a/cloud-integration/google-cloud/images/google-cloud-api-library001.png and /dev/null differ diff --git a/cloud-integration/google-cloud/images/google-cloud-storage001.png b/cloud-integration/google-cloud/images/google-cloud-storage001.png deleted file mode 100644 index 6ab5c0850..000000000 Binary files a/cloud-integration/google-cloud/images/google-cloud-storage001.png and /dev/null differ diff --git a/cloud-integration/google-cloud/images/google-cloud-storage002.png b/cloud-integration/google-cloud/images/google-cloud-storage002.png deleted file mode 100644 index 77a2750d7..000000000 Binary files a/cloud-integration/google-cloud/images/google-cloud-storage002.png and /dev/null differ diff --git a/cloud-integration/google-cloud/images/google-cloud-storage003.png b/cloud-integration/google-cloud/images/google-cloud-storage003.png deleted file mode 100644 index 231443b1a..000000000 Binary files a/cloud-integration/google-cloud/images/google-cloud-storage003.png and /dev/null differ diff --git a/cloud-integration/google-cloud/images/google-cloud-translation-api000.png b/cloud-integration/google-cloud/images/google-cloud-translation-api000.png deleted file mode 100644 index 800d34e93..000000000 Binary files a/cloud-integration/google-cloud/images/google-cloud-translation-api000.png and /dev/null differ diff --git a/cloud-integration/google-cloud/images/google-cloud-translation-api001.png b/cloud-integration/google-cloud/images/google-cloud-translation-api001.png deleted file mode 100644 index ccb65883c..000000000 Binary files a/cloud-integration/google-cloud/images/google-cloud-translation-api001.png and /dev/null differ diff --git a/cloud-integration/google-cloud/images/google-cloud-translation-api003.png b/cloud-integration/google-cloud/images/google-cloud-translation-api003.png deleted file mode 100644 index c51fb62b2..000000000 Binary files a/cloud-integration/google-cloud/images/google-cloud-translation-api003.png and /dev/null differ diff --git a/cloud-integration/google-cloud/images/google_cloud_nosql001.png b/cloud-integration/google-cloud/images/google_cloud_nosql001.png deleted file mode 100644 index aa0c18c6c..000000000 Binary files a/cloud-integration/google-cloud/images/google_cloud_nosql001.png and /dev/null differ diff --git a/cloud-integration/google-cloud/images/google_cloud_nosql002.png b/cloud-integration/google-cloud/images/google_cloud_nosql002.png deleted file mode 100644 index 3e6727770..000000000 Binary files a/cloud-integration/google-cloud/images/google_cloud_nosql002.png and /dev/null differ diff --git a/cloud-integration/google-cloud/images/google_cloud_nosql003.png b/cloud-integration/google-cloud/images/google_cloud_nosql003.png deleted file mode 100644 index f88c10536..000000000 Binary files a/cloud-integration/google-cloud/images/google_cloud_nosql003.png and /dev/null differ diff --git a/cloud-integration/google-cloud/images/google_cloud_nosql004.png b/cloud-integration/google-cloud/images/google_cloud_nosql004.png deleted file mode 100644 index 585740d58..000000000 Binary files a/cloud-integration/google-cloud/images/google_cloud_nosql004.png and /dev/null differ diff --git a/cloud-integration/google-cloud/images/google_cloud_overview001.png b/cloud-integration/google-cloud/images/google_cloud_overview001.png deleted file mode 100644 index fcb45e8ba..000000000 Binary files a/cloud-integration/google-cloud/images/google_cloud_overview001.png and /dev/null differ diff --git a/cloud-integration/google-cloud/overview.md b/cloud-integration/google-cloud/overview.md deleted file mode 100644 index 765b27d12..000000000 --- a/cloud-integration/google-cloud/overview.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Overview -page_title: Google Cloud Services -description: Learn how one can use the Google Cloud in a Telerik UI for WinForms application. -slug: common-google-cloud-overview -position: 0 ---- - -# Google Cloud Overview - -[Google Cloud Platform](https://cloud.google.com/) is a solution which allows businesses to leverage Google's infrastructure. The platform provides different services similar to those of the other most famous and widely-used providers such as Microsoft and Amazon. This section aims to provide an overview of some of the available services and show simple scenarios on how the platform can be integrated with the **Telerik UI for WinForms** controls. - -![Google Cloud Platform services overview for Telerik UI for WinForms cloud integration scenarios.](images/google_cloud_overview001.png) - -Here is a short list of some of the most useful services: - -- **Computing**: The platform provides a large set of computing services which can be customized according to your specific scenario. Some of the available services are Virtual Machines, App Engine for building web applications, Google Kubernetes Engine which serves as an automated container management, cloud computing which makes it easy for you to execute specific logic without the need of maintaining servers. - -- **Storage & Databases**: Google Cloud Platform provides multiple storage options. According to the needs of your application, you can utilize the Cloud Storage which is great for world-wide retrieval of all kinds of data, Cloud SQL which is a fully-managed SQL database, Cloud Datastore which is highly-scalable NoSQL database, etc. - -- **Cloud AI**: Google Cloud's AI provides modern machine learning services such as the Google Cloud Vision API, Google Cloud Speech API, the Google Cloud Video Intelligence API and many others. - -You can find out more detailed information by navigating to the desired service in [Google Cloud's Products & Services page](https://cloud.google.com/products/). - -## See Also - -* [Datastore]({%slug common-google-cloud-datastore-nosql%}) -* [Storage]({%slug common-google-cloud-storage%}) -* [Translation]({%slug common-google-cloud-translation%}) diff --git a/cloud-integration/google-cloud/storage.md b/cloud-integration/google-cloud/storage.md deleted file mode 100644 index 30a6838fd..000000000 --- a/cloud-integration/google-cloud/storage.md +++ /dev/null @@ -1,143 +0,0 @@ ---- -title: Storage -page_title: Storage - WinForms Cloud Integration -description: Learn how you can use Storage with the Telerik UI For WinForms suite. Other cloud services like GoogleCloud, AWS, and Azure are also available. -slug: common-google-cloud-storage -tags: cloud,integration,google,storage -published: True -position: 3 ---- - -# Storage - -Google Cloud Storage allows world-wide storage and retrieval of any amount of data at any time. It can be used for a range of scenarios including serving website content, storing data for archival and disaster recovery, or distributing large data objects to users via direct download. - -## Enable APIs - -For the purposes of this article, you will have to enable the Google Cloud Storage API and Google Cloud Storage JSON API. Please read the [Getting Started]({%slug cloud-integration-google-getting-started%}) for more information on how you can achieve that. - -## Step 1: Create the WinForms Application - -Create a standard [Telerik WinForms]({%slug winforms/visual-studio-templates%}) application and add 3 [RadButtons]({%slug winforms/buttons/button%}) and a [RadListView]({%slug winforms/listview%}) to it. The first button will list all of the files uploaded in our storage. The second button will upload a file and the third one will delete the selected file. The layout should look like this: - -![Telerik UI for WinForms Google Cloud Storage application layout with RadListView and upload, list, and delete buttons](images/google-cloud-storage001.png) - -## Step 2: Install the NuGet package - -Open the NuGet Package Manager and install the **Google.Cloud.Storage.V1** package. - -![NuGet Package Manager installing the Google.Cloud.Storage.V1 package for a Telerik UI for WinForms application](images/google-cloud-storage002.png) - -## Step 3: Connect the Application to the Storage - -The next step is to create the [StorageClient](https://googlecloudplatform.github.io/google-cloud-dotnet/docs/Google.Cloud.Storage.V1/api/Google.Cloud.Storage.V1.StorageClient.html) object which will be used for uploading, deleting and listing files. - -````C# -private StorageClient storageClient; - -private const string BucketName = "telerik-bucket"; - -public RadForm1() -{ - InitializeComponent(); - this.storageClient = StorageClient.Create(); -} - -```` -````VB.NET -Private storageClient As StorageClient - -Private Const BucketName As String = "telerik-bucket" - -Public Sub New() - InitializeComponent() - Me.storageClient = StorageClient.Create() -End Sub - -```` - ->tip In order for this to work you need to add the __GOOGLE_APPLICATION_CREDENTIALS__ environment variable. It must point to the JSON file that contains the license information. This file can be obtained by creating a [service account](https://cloud.google.com/docs/authentication/). - -Now you can use the above object to manage the files. Here is how you can handle the buttons' Click events and perform the respective operations: - -````C# -private void radButtonListFiles_Click(object sender, EventArgs e) -{ - var items = storageClient.ListObjects(BucketName); - - this.radListView1.Items.Clear(); - - foreach (Google.Apis.Storage.v1.Data.Object item in items) - { - this.radListView1.Items.Add(item.Name); - } -} - -private void radButtonUpload_Click(object sender, EventArgs e) -{ - OpenFileDialog dlg = new OpenFileDialog(); - if (dlg.ShowDialog() == DialogResult.OK) - { - var fileName = Path.GetFileName(dlg.FileName); - - Stream fileStream = File.OpenRead(dlg.FileName); - - var test = storageClient.UploadObject(BucketName, fileName, null, fileStream); - this.radListView1.Items.Add(fileName); - } - -} - -private void radButtonDelete_Click(object sender, EventArgs e) -{ - var item = this.radListView1.SelectedItem.Text; - storageClient.DeleteObject(BucketName, item); - - radListView1.Items.Remove(radListView1.SelectedItem); -} - -```` -````VB.NET - -Private Sub radButtonListFiles_Click(ByVal sender As Object, ByVal e As EventArgs) - Dim items = storageClient.ListObjects(BucketName) - - Me.radListView1.Items.Clear() - - For Each item As Google.Apis.Storage.v1.Data.Object In items - Me.radListView1.Items.Add(item.Name) - Next item -End Sub - -Private Sub radButtonUpload_Click(ByVal sender As Object, ByVal e As EventArgs) - Dim dlg As New OpenFileDialog() - If dlg.ShowDialog() = DialogResult.OK Then - Dim fileName = Path.GetFileName(dlg.FileName) - - Dim fileStream As Stream = File.OpenRead(dlg.FileName) - - Dim test = storageClient.UploadObject(BucketName, fileName, Nothing, fileStream) - Me.radListView1.Items.Add(fileName) - End If - -End Sub - -Private Sub radButtonDelete_Click(ByVal sender As Object, ByVal e As EventArgs) - Dim item = Me.radListView1.SelectedItem.Text - storageClient.DeleteObject(BucketName, item) - - radListView1.Items.Remove(radListView1.SelectedItem) -End Sub - -```` - -Now you are ready to start using the application: - -![Telerik UI for WinForms RadListView displaying files uploaded to Google Cloud Storage](images/google-cloud-storage003.png) - - -## See Also - -* [Getting Started]({%slug cloud-integration-google-getting-started%}) -* [Datastore]({%slug common-google-cloud-datastore-nosql%}) -* [Translation]({%slug common-google-cloud-translation%}) \ No newline at end of file diff --git a/cloud-integration/google-cloud/translation.md b/cloud-integration/google-cloud/translation.md deleted file mode 100644 index c7b121d1b..000000000 --- a/cloud-integration/google-cloud/translation.md +++ /dev/null @@ -1,73 +0,0 @@ ---- -title: Translation API -page_title: Translation API - WinForms Cloud Integration -description: Learn how you can use Translation API with the Telerik UI For WinForms suite. Other cloud services like GoogleCloud, AWS, and Azure are also available. -slug: common-google-cloud-translation -position: 4 ---- - -# Translation API - -In this article we are going to show you how to use Google's Translation API. The process of embedding the functionality in your .NET application is very easy once you have enabled the feature from your GCP console. - -## Step 1: Create the WinForms Application - -Create a standard [Telerik WinForms]({%slug winforms/visual-studio-templates%}) application and add 2 [RadTextboxes]({%slug winforms/editors/textbox%}) and a [Button]({%slug winforms/buttons/button%}) to it. The layout should look like this: - -![Telerik UI for WinForms translation application layout with two RadTextBoxes and a button.](images/google-cloud-translation-api000.png) - -## Step 2: Adding the NuGet Package - -In order to proceed with adding the functionality in your application, you should first enable the feature from your GCP console. - -Once you have done so, you can add the **Google.Cloud.Translation.V2 NuGet** package to your application as shown in the image below: - -![NuGet Package Manager installing the Google.Cloud.Translation.V2 package for a Telerik UI for WinForms translation application.](images/google-cloud-translation-api001.png) - -Once you have all the required packages installed, you can use it within your application by utilizing the **TranslationClient** class. - -## Step 3: Using the Translation API - -The typed message will be translated on a click of a RadButton. The following snippet shows how to access the translation API and translate the specific text: - -````C# -private async void TranslateMessage(object sender, EventArgs e) -{ - string textToTranslate = this.inputEntry.Text; - - if (!String.IsNullOrEmpty(textToTranslate)) - { - //authJson represents the unique json issue by Google Cloud used for authentication - var credentials = GoogleCredential.FromJson(authJson); - TranslationClient client = TranslationClient.Create(credentials); - var response = client.TranslateText(textToTranslate, "ru") as TranslationResult; - this.outputLabel.Text = response.TranslatedText; - } -} -```` -````VB.NET -Private Async Sub TranslateMessage(ByVal sender As Object, ByVal e As EventArgs) - Dim textToTranslate As String = Me.inputEntry.Text - - If Not String.IsNullOrEmpty(textToTranslate) Then - 'authJson represents the unique json issue by Google Cloud used for authentication - Dim credentials = GoogleCredential.FromJson(authJson) - Dim client As TranslationClient = TranslationClient.Create(credentials) - Dim response = TryCast(client.TranslateText(textToTranslate, "ru"), TranslationResult) - Me.outputLabel.Text = response.TranslatedText - End If -End Sub - -```` - ->tip The example shows how to create the TranslationClient by feeding it with your credentials. However, you can also set up the authentication on your machine and there will be no need of such steps. You can refer to Google's [Authentication Overview](https://cloud.google.com/docs/authentication/) section. - -Here is the result of the operation: - -![Telerik UI for WinForms translation application showing translated text from the Google Cloud Translation API.](images/google-cloud-translation-api003.png) - -## See Also - -* [Getting Started]({%slug cloud-integration-google-getting-started%}) -* [Datastore]({%slug common-google-cloud-datastore-nosql%}) -* [Storage]({%slug common-google-cloud-storage%}) diff --git a/cloud-integration/overview.md b/cloud-integration/overview.md deleted file mode 100644 index 262c1f9f5..000000000 --- a/cloud-integration/overview.md +++ /dev/null @@ -1,62 +0,0 @@ ---- -title: Overview -page_title: Cloud Intergations and Services -description: Learn how one can use various cloud services like GoogleCloud, AWS, and Azure with the Telerik UI For Winforms suite. -slug: cloud-services/overview -tags: cloud,google,amazon,azure -published: True -position: 0 ---- - -# Cloud Services - -This section shows how one can use various cloud services like __GoogleCloud__, __AWS__, and __Azure__ with the __Telerik UI For WinForms__ suite. The following list contains the topics discussed here: - -* Azure - - - [Getting Started]({%slug cloud-services/azure/getting-started%}) - - - Connect to Data in the Cloud - - - [Cosmos DB]({%slug cloud-services/azure/cosmosdb%}) - - - [SQL Database]({%slug cloud-services/azure/sql-database%}) - - - [Blob Storage]({%slug cloud-services/azure/blob-storage%}) - - - Cognitive Services - - - [Image Analysis]({%slug cloud-services/azure/image-analysis%}) - - - [Text Analysis]({%slug cloud-services/azure/text-analysis%}) - -* Google Cloud - - * [Getting Started]({%slug cloud-integration-google-getting-started%}) - - * Connect to data in the cloud - - - [Datastore]({%slug common-google-cloud-datastore-nosql%}) - - * [Storage]({%slug common-google-cloud-storage%}) - - * [Translation]({%slug common-google-cloud-translation%}) - -* AWS - - * [Overview]({%slug cloud-services/aws/overview%}) - - * [Getting Started]({%slug cloud-services/aws/getting-started%}) - - * Connect to data in the cloud - - * [DynamoDB]({%slug cloud-services/aws/dynamodb%}) - - * [RDS]({%slug cloud-services/aws/rds%}) - - * [Storage (S3)]({%slug cloud-services/aws/storage%}) - - * [Simple Email Service]({%slug cloud-services/aws/ses%}) - - - diff --git a/controls/map/providers/bingmaps/migrating-from-bing-maps.md b/controls/map/providers/bingmaps/migrating-from-bing-maps.md index d0dbcb6d7..b9bf54603 100644 --- a/controls/map/providers/bingmaps/migrating-from-bing-maps.md +++ b/controls/map/providers/bingmaps/migrating-from-bing-maps.md @@ -174,4 +174,4 @@ Keep provider-specific credentials and HTTP calls inside the provider or an appl * [BingRestMapProvider]({%slug winforms/map/providers/bingrestmapprovider%}) * [CacheProvider]({%slug winforms/map/providers/cacheprovider%}) * [Map Getting Started]({%slug winforms/map/getting-started%}) -* [Map Providers Overview]({%slug winforms/map/overview%}) +* [Map Providers Overview]({%slug winforms/map/providers%}) diff --git a/docs-builder.yml b/docs-builder.yml index c31dc7520..ac2f7b6d0 100644 --- a/docs-builder.yml +++ b/docs-builder.yml @@ -142,6 +142,9 @@ meta: telerik-presentation-framework/events: title: Events position: 6 + telerik-presentation-framework/developer-focused-examples: + title: Developer Focused Examples + position: 25 telerik-presentation-framework/layout: title: Layout position: 5 @@ -1634,29 +1637,9 @@ meta: controls/barcodeview: title: BarcodeView position: 56 - cloud-integration/google-cloud: - title: Google Cloud - position: 2 - cloud-integration/azure/cognitive-services: - title: Cognitive Services - position: 5 - cloud-integration/azure/connect-to-data-in-the-cloud: - title: Connect to Data in the Cloud - position: 2 - cloud-integration/azure: - title: Azure - position: 1 - cloud-integration/aws/connect-to-data-in-the-cloud: - title: Connect to Data in the Cloud - position: 2 - cloud-integration/aws: - title: Amanzon Web Services (AWS) - position: 3 - cloud-integration: - title: Cloud Integration - position: 19 analytics: title: Analytics + hideChildren: true position: 18 security: title: Security @@ -1676,6 +1659,9 @@ meta: styling-and-appearance: title: Styling and Appearance position: 11 + telerik-presentation-framework/section-508-compliance: + title: Section 508 Compliance + position: 24 telerik-presentation-framework: title: Telerik Presentation Framework position: 10 @@ -1694,6 +1680,27 @@ meta: installation-and-upgrades: title: Installation and Upgrades position: 5 + installation-and-upgrades/system-requirements: + title: System Requirements + position: 0 + installation-and-upgrades/installation: + title: Installation + position: 1 + installation-and-upgrades/install-using-nuget: + title: Install using NuGet Packages + position: 2 + installation-and-upgrades/installing-on-your-computer: + title: Install using MSI + position: 3 + installation-and-upgrades/installing-from-progress-control-panel: + title: Install from Progress Control Panel + position: 4 + installation-and-upgrades/telerik-cli: + title: Telerik CLI + position: 5 + installation-and-upgrades/download-product-files: + title: Download Product Files + position: 6 ai-coding-assistant/converter: title: Telerik Converter position: 4 @@ -1709,9 +1716,15 @@ meta: getting-started: title: Getting Started position: 2 - winformslab: - title: WinForms Labs + getting-started/first-steps: + title: First Steps + position: 0 + getting-started/video-onboarding: + title: Video Onboarding position: 1 + getting-started/explore-control-features: + title: Explore Tools and Features + position: 2 redirects: - @@ -2316,7 +2329,11 @@ redirects: type: Permanent - from: "^/devtools/winforms/installation-deployment-and-distribution/install-using-nuget$" - to: "/devtools/winforms/visual-studio-integration/install-using-nuget" + to: "/devtools/winforms/installation-and-upgrades/install-using-nuget" + type: Permanent +- + from: "^/devtools/winforms/visual-studio-integration/install-using-nuget$" + to: "/devtools/winforms/installation-and-upgrades/install-using-nuget" type: Permanent - from: "^/devtools/winforms/installation-deployment-and-distribution/application-deployment$" diff --git a/getting-started/change-control-appearance.md b/getting-started/change-control-appearance.md deleted file mode 100644 index 16cb7411a..000000000 --- a/getting-started/change-control-appearance.md +++ /dev/null @@ -1,44 +0,0 @@ ---- -title: Preview and Change Control Appearance -page_title: Preview and Change Control Appearance -description: Read the Preview and Change Control Appearance article and learn how to get started with Telerik UI for WinForms. -slug: winforms/getting-started/change-control-appearance -tags: get,started,change,control,appearance, preview -published: True -position: 2 ---- -# Preview and Change Control Appearance - -## Preview Custom Theme -Using the Live Demo is an easy and fast way to preview different Telerik WinForms control themes. ->caption Figure 1: Live Demo -![Telerik UI for WinForms Live Demo showing available control themes](images/demos-themes.png) - -## ThemeViewer -[ThemeViewer]({% slug winforms/tools/themeviewer %}) is a tool that gives you the ability to preview a custom or a predefined theme for all controls of the suite. It can be started from the Live Demo under Featured Applications. ->caption Figure 2: ThemeViewer -![Telerik UI for WinForms ThemeViewer previewing predefined and custom control themes](images/tools-themeviewer001.png) - -## Custom Shapes - -The [Custom Shape Editor]({% slug winforms/tools/shapeeditor %}) provides an easy way for creating all kinds of custom shapes only by adding, removing and dragging the points which represent the shape. ->caption Figure 3: Custom Shape Editor -![Telerik UI for WinForms Custom Shape Editor for creating and editing control shapes](images/tools-shapeeditor-overview001.png) - -## Change Control Appearance - -[Visual Style Builder]({% slug winforms/tools/visual-style-builder %}) is a stand alone application that allows you to create custom or edit predefined themes. Using Visual Style Builder you can alter, at design-time or run time, a predefined set of properties of a control. Because all Telerik controls are composed of primitives, this customization can be applied at a very fine level of detail. ->caption Figure 4: Visual Style Builder Tool -![Telerik UI for WinForms Visual Style Builder for customizing control themes and properties](images/tools-visual-style-builder-overview.png) - - -## Next Steps - -* [Continue with WinForms next steps]({%slug winforms/getting-started/next-steps%}) - -## See Also - -* [Visual Style Builder]({% slug winforms/tools/visual-style-builder %}) -* [ThemeViewer]({% slug winforms/tools/themeviewer %}) -* [Custom Shape Editor]({% slug winforms/tools/shapeeditor %}) -* [Predefined Template Applications](https://www.telerik.com/winforms/winforms-guide) diff --git a/getting-started/explore-control-features.md b/getting-started/explore-control-features.md index eefd657c8..9313b6cbb 100644 --- a/getting-started/explore-control-features.md +++ b/getting-started/explore-control-features.md @@ -1,55 +1,53 @@ --- -title: Explore UI for WinForms Control Features -page_title: Explore UI for WinForms Control Features +title: Explore Tools and Features +page_title: Explore Tools and Features description: This article provides a short overview of how to get started with finding WinForms control functionality and use them. slug: winforms/getting-started/explore-control-features tags: get,started,explore,control,features published: True -position: 1 +position: 2 --- -# Explore UI for WinForms Control Features -Once you have the controls [working in your project]({%slug winforms/getting-started/first-steps%}), it's time to see what they can do. This article provides a short overview of how to get started with finding control functionality and use them. +# Explore Telerik UI for WinForms Tools and Features + +Once you have Telerik UI for WinForms [working in your project]({%slug winforms/getting-started/first-steps%}), explore the tools and design-time features that help you discover, preview, and customize the available controls. ## Demos To access the **Live Demo** simply click on the Windows Start button and type WinForms Demo. If you are not able to find the Live Demos using that approach you can also [download the WinForms Live Demos installer](https://telerik-winforms-demos.s3.amazonaws.com/TelerikWinFormsExamplesLauncher.exe) directly. ![Explore Live Demos](images/overview.png "Explore Live Demos") -## Explore properties and tags -You can **explore** the available properties, events and inner tags of any control through the VS **intellisense** to get a quick glimpse of their concepts and availability. ->caption Figure 1: Explore Control Properties in Form Designer -If you do not see the Property window, go to **View > Properties Windows** - -![Explore Control Properties in Form Designer](images/control-properties-in-form-designer.png "Explore Control Properties in Form Designer") +### Preview Custom Theme +Using the Live Demo is an easy and fast way to preview different Telerik WinForms control themes. +>caption Figure 1: Live Demo +![Telerik UI for WinForms Live Demo showing available control themes](images/demos-themes.png) ->caption Figure 2: Explore Control Properties in Code-Behind +## ThemeViewer +[ThemeViewer]({% slug winforms/tools/themeviewer %}) is a tool that gives you the ability to preview a custom or a predefined theme for all controls of the suite. It can be started from the Live Demo under Featured Applications. +>caption Figure 2: ThemeViewer +![Telerik UI for WinForms ThemeViewer previewing predefined and custom control themes](images/tools-themeviewer001.png) -![Explore Control Properties in Code-Behind](images/control-properties-in-code-behind.png "Explore Control Properties in Code-Behind") - -## Documentation -In addition to that, the **documentation** provides a section for each control that contains help articles **on distinct features and API reference**. +## Custom Shapes ->caption Figure 3: Typical control documentation structure +The [Custom Shape Editor]({% slug winforms/tools/shapeeditor %}) provides an easy way for creating all kinds of custom shapes only by adding, removing and dragging the points which represent the shape. +>caption Figure 3: Custom Shape Editor +![Telerik UI for WinForms Custom Shape Editor for creating and editing control shapes](images/tools-shapeeditor-overview001.png) -![Typical control documentation structure](images/typical-control-docs-structure.png "Typical control documentation structure") +## Change Control Appearance -## Design-time +[Visual Style Builder]({% slug winforms/tools/visual-style-builder %}) is a stand alone application that allows you to create custom or edit predefined themes. Using Visual Style Builder you can alter, at design-time or run time, a predefined set of properties of a control. Because all Telerik controls are composed of primitives, this customization can be applied at a very fine level of detail. +>caption Figure 4: Visual Style Builder Tool +![Telerik UI for WinForms Visual Style Builder for customizing control themes and properties](images/tools-visual-style-builder-overview.png) -Last, but not least, some most common tasks and configuration options are available under the [**Design Time**]({% slug winforms/buttons/dropdownbutton/design-time %}) folder of each control. +## Design Time Support ->caption Figure 4: Smart Tag features +You can explore the properties, events, and inner tags exposed by a control directly in Visual Studio through the **Properties** window and IntelliSense. This gives you a quick overview of each control's capabilities. -![Smart Tag features](images/smart-tag-features.png "Smart Tag features") -## Next Steps - -Below you can find guidance on changing the control appearance as well as next steps: +>caption Figure 1: Explore Control Properties in Form Designer -* [Preview and Change control appearance]({%slug winforms/getting-started/change-control-appearance%}) -* [Continue with WinForms next steps]({%slug winforms/getting-started/next-steps%}) +![Explore Control Properties in Code-Behind](images/control-properties-in-code-behind.png "Explore Control Properties in Code-Behind") ## See Also * [First Steps]({%slug winforms/getting-started/first-steps%}) -* [Predefined Template Applications](https://www.telerik.com/winforms/winforms-guide) -* [Progress Virtual Classroom](https://www.telerik.com/account/support/virtual-classroom) +* [Predefined Template Applications](https://www.telerik.com/winforms/winforms-guide) \ No newline at end of file diff --git a/getting-started/first-steps.md b/getting-started/first-steps.md index bfbc4c1ff..2982bf3f3 100644 --- a/getting-started/first-steps.md +++ b/getting-started/first-steps.md @@ -1,6 +1,6 @@ --- -title: First Steps with Telerik UI for WinForms -page_title: First Steps with Telerik UI for WinForms +title: First Steps +page_title: First Steps description: Create your first Telerik UI for WinForms project, configure the Telerik NuGet feed, install the controls, and bind data to RadGridView. slug: winforms/getting-started/first-steps tags: get,started,first,steps @@ -10,39 +10,46 @@ position: 0 # First Steps with Telerik UI for WinForms -This tutorial shows how to create your first Telerik UI for WinForms desktop application. You will create a new project, configure the Telerik NuGet feed, install the Telerik UI for WinForms packages, and bind sample data to `RadGridView`. +This tutorial shows how to create your first Telerik UI for WinForms desktop application. ## Prerequisites -- To download Telerik UI for WinForms packages, you need a [Telerik account](https://www.telerik.com/account/). If you do not have an account, you can [create a free Telerik account](https://www.telerik.com/account/). -- To build an application, you need an up-to-date [Visual Studio IDE](https://visualstudio.microsoft.com/vs/) installation with a [compatible .NET version]({%slug winforms/installation-deployment-and-distribution/distributions%}) and the Telerik UI for WinForms workload installed. +- To download Telerik UI for WinForms packages, you need a [Telerik account](https://www.telerik.com/account/). If you do not have, you can [create one for free](https://www.telerik.com/account/). +- Install [Visual Studio IDE](https://visualstudio.microsoft.com/vs/) with `.NET desktop development` workload. -## Step 0: Start Your Free Trial +## Set Up Telerik Development Environment -- If you already have an [active license](https://www.telerik.com/account/your-licenses) for Telerik UI for WinForms, skip this step and continue with Step 1. -- If you do not have an active license, follow these steps to activate your free trial: +The fastest way to set up your Telerik development environment is to use the [Telerik CLI]({%slug telerik-cli%}) .NET tool. Run the following commands in your preferred command shell (Visual Studio Terminal, cmd, PowerShell, or other). - 1. [Download the WinForms Installer](https://www.telerik.com/try/ui-for-winforms) and start the installation. +>tip If you have already set up your Telerik development environment and it doesn't need updating, skip to [Create a new WinForms Telerik Project](#create-new-winforms-telerik-project). - 1. Make sure that **Telerik UI for WinForms** is selected and continue with the setup. +1. Install Telerik CLI - 1. Log in with your Telerik account and complete the installation. + ``` + dotnet tool install -g Telerik.CLI + ``` - After the installer completes, it activates your 30-day free trial and downloads your license key file. You can then skip Step 1 and continue with [Step 2: Create a New WinForms Telerik Project](#step-2-create-a-new-winforms-telerik-project). +1. Run the `telerik setup winforms` command -## Step 1: Download Your License Key File + ``` + telerik setup winforms + ``` -Telerik UI for WinForms requires license activation through a trial or commercial license key. To download and install your Telerik [license key file]({%slug license-key%}): +The `telerik setup winforms` command performs [multiple Telerik CLI setup steps at once]({%slug telerik-cli%}) to configure your Telerik development environment automatically: -1. Go to the License Keys page in your Telerik account. -1. Click the **Download License Key** button. -1. Save the `telerik-license.txt` file to `%AppData%\Telerik\telerik-license.txt`. +✓ Creates your Telerik account or log in if you already have one. -This makes the license key available to all Telerik applications that you develop on your local machine. +✓ Activates a Telerik UI for WinForms trial if you don't have an active license. ->note To download the Telerik license key automatically, use [Telerik Visual Studio Extensions]({% slug license-key%}#automatic-license-key-installation). +✓ Downloads your Telerik license key file and saves `telerik-license.txt` to your operating system user's folder, making it available to all Telerik .NET apps on your machine. -## Step 2: Create a new WinForms Telerik Project +✓ Configures the Telerik NuGet package source. + +✓ Installs the Telerik MCP server for AI-powered coding assistance. + +Now, your Telerik development environment is configured and ready to use! + +## Create new WinForms Telerik Project In this step, create a basic Telerik WinForms project that you can use as a starting point for your application: @@ -56,47 +63,9 @@ In this step, create a basic Telerik WinForms project that you can use as a star >note Telerik project templates are available in C# and VB for .NET and .NET Framework. -## Step 3: Add the Telerik NuGet Server - -Telerik maintains a NuGet feed with official Telerik UI for WinForms releases. These packages are available to registered users with an active trial or commercial license. Adding the Telerik NuGet server as a package source in Visual Studio lets you download and install Telerik packages that contain controls and utilities. - ->important Starting with the **Q3 2026** release, all Telerik UI for WinForms NuGet packages are also available on NuGet.org. If you use NuGet.org, you do not need to configure the Telerik NuGet server. - -Because the Telerik NuGet server requires authentication, first create an API key that you will use instead of a password. This approach is more secure, especially when you work 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 +**. - - ![Telerik account API Keys page for generating a NuGet API key for Telerik UI for WinForms](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 because you will need it in the next steps. Whenever Visual Studio asks for Telerik NuGet credentials, use `api-key` as the username and your generated API key as the password. +## Download Telerik UI for WinForms Controls ->important Telerik API keys expire after two years. Telerik sends an email when a key is about to expire, but it is a good practice to keep your own reminder together with the places where you used the key, such as file paths, project links, Azure DevOps variables, or GitHub Actions secrets. - -Next, add the Telerik NuGet feed to Visual Studio: - -1. In Visual Studio, go to **Tools > NuGet Package Manager > Package Manager Settings**. - -1. Select **Package Sources**, and then click **+** to add a new package source. - -1. Enter a **Name** for the new package source, for example, `telerik.com`. - -1. Enter `https://nuget.telerik.com/v3/index.json` in the **Source** field, and 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. - ->caption Figure 2: Add the Telerik NuGet feed - - ![Visual Studio Package Sources settings with the Telerik NuGet feed URL configured](images/telerik-nuget-feed.png) - -## Step 4: Download Telerik UI for WinForms Controls +>important Starting with **Q3 2026**, all Telerik UI for WPF NuGet packages will be available on [NuGet.org](https://www.nuget.org/). If you install packages from NuGet.org, you do not need to configure the Telerik NuGet server. The easiest way to get Telerik UI for WinForms controls on your development machine is to [install them with NuGet packages]({% slug winforms/nuget%}) directly from **NuGet Package Manager** in Visual Studio. @@ -104,7 +73,7 @@ The easiest way to get Telerik UI for WinForms controls on your development mach 1. Select the Telerik package source that you added in Step 3. -1. Search for `UI.for.WinForms.AllControls`, and install the **Telerik.UI.for.WinForms.AllControls** package. +1. Search for `Telerik.UI.for.WinForms.AllControls`, and install the **Telerik.UI.for.WinForms.AllControls** package. >caption Figure 3: Install the Telerik.UI.for.WinForms.AllControls package @@ -119,223 +88,82 @@ After installation, the `Telerik.UI.for.WinForms.AllControls` package appears un ![Solution Explorer showing the installed Telerik.UI.for.WinForms.AllControls package under Packages](images/first-steps-installed.png) -## Step 5: Add a Telerik UI for WinForms Control to the RadForm +## Add a Telerik UI for WinForms Control to the RadForm -After you install Telerik UI for WinForms, the controls appear in the Visual Studio Toolbox. To add a Telerik component, drag it from the Toolbox to the form designer surface. +After you install Telerik UI for WinForms, the controls appear in the Visual Studio Toolbox. To add a Telerik component, drag it from the Toolbox and drop it onto the form designer surface. -### 5.1 Add RadGridView to the RadForm +1. Add RadGridView to the RadForm -Add the [RadGridView]({% slug winforms/gridview/getting-started%}) control. Search for **RadGridView** in the Toolbox, and then drag it to the form designer surface. +For this example, let's add the [RadGridView]({% slug winforms/gridview/getting-started%}) control. Search for **RadGridView** in the Toolbox, and then drag it to the form designer surface. >caption Figure 5: Add RadGridView from the Toolbox ![Visual Studio Toolbox with RadGridView dragged onto the form designer surface](images/first-steps-add-radgridview.gif) -`RadGridView` is now added to the form. Next, bind the control to sample data so you can verify that the project is configured correctly. - -### 5.2 Bind to BindingList of Custom Object - -The following example defines an `Employee` class with several properties and binds a `BindingList` to `RadGridView`. - -Add the `Employee` class to your project: - -````C# -public class Employee -{ - public int EmployeeID { get; set; } - public string FullName { get; set; } - public string JobTitle { get; set; } - public string Department { get; set; } - public string Country { get; set; } - public string TimeZone { get; set; } - public string WorkMode { get; set; } -} - -```` -````VB.NET -Public Class Employee - Public Property EmployeeID As Integer - Public Property FullName As String - Public Property JobTitle As String - Public Property Department As String - Public Property Country As String - Public Property TimeZone As String - Public Property WorkMode As String -End Class - -```` - -Then create a `BindingList` and assign it to the `RadGridView.DataSource` property. `RadGridView` automatically generates columns and populates them with the values from each `Employee` object. - -Use the following code in your form: - -````C# -public partial class RadForm1 : Telerik.WinControls.UI.RadForm -{ - private BindingList employees; - public RadForm1() - { - InitializeComponent(); - - employees = new BindingList - { - new Employee - { - EmployeeID = 84217, - FullName = "Luca Bianchi", - JobTitle = "Software Developer", - Department = "Engineering", - Country = "Italy", - TimeZone = "EET (UTC+1)", - WorkMode = "Remote" - }, - new Employee - { - EmployeeID = 91354, - FullName = "Sofia Ivanova", - JobTitle = "Product Manager", - Department = "Product", - Country = "Bulgaria", - TimeZone = "EET (UTC+2)", - WorkMode = "Hybrid" - }, - new Employee - { - EmployeeID = 77529, - FullName = "Anna Müller", - JobTitle = "UX Designer", - Department = "Design", - Country = "Germany", - TimeZone = "CET (UTC+1)", - WorkMode = "On-site" - }, - new Employee - { - EmployeeID = 99012, - FullName = "John Smith", - JobTitle = "Prompt Engineer", - Department = "AI Research", - Country = "USA", - TimeZone = "EST (UTC-5)", - WorkMode = "Remote" - }, - new Employee - { - EmployeeID = 73166, - FullName = "Noah Duboisa", - JobTitle = "Software Engineer", - Department = "Engineering", - Country = "Japan", - TimeZone = "JST (UTC+9)", - WorkMode = "On-site" - }, - new Employee - { - EmployeeID = 55891, - FullName = "Carlos García", - JobTitle = "DevOps Engineer", - Department = "IT", - Country = "Spain", - TimeZone = "CET (UTC+1)", - WorkMode = "Remote" - } - }; - this.radGridView1.DataSource = employees; - this.radGridView1.AutoSizeColumnsMode = GridViewAutoSizeColumnsMode.Fill; - } -} -```` -````VB.NET -Partial Public Class RadForm1 - Inherits Telerik.WinControls.UI.RadForm - - Private employees As BindingList(Of Employee) - - Public Sub New() - InitializeComponent() - - employees = New BindingList(Of Employee) From { - New Employee With { - .EmployeeID = 84217, - .FullName = "Luca Bianchi", - .JobTitle = "Software Developer", - .Department = "Engineering", - .Country = "Italy", - .TimeZone = "EET (UTC+1)", - .WorkMode = "Remote" - }, - New Employee With { - .EmployeeID = 91354, - .FullName = "Sofia Ivanova", - .JobTitle = "Product Manager", - .Department = "Product", - .Country = "Bulgaria", - .TimeZone = "EET (UTC+2)", - .WorkMode = "Hybrid" - }, - New Employee With { - .EmployeeID = 77529, - .FullName = "Anna Müller", - .JobTitle = "UX Designer", - .Department = "Design", - .Country = "Germany", - .TimeZone = "CET (UTC+1)", - .WorkMode = "On-site" - }, - New Employee With { - .EmployeeID = 99012, - .FullName = "John Smith", - .JobTitle = "Prompt Engineer", - .Department = "AI Research", - .Country = "USA", - .TimeZone = "EST (UTC-5)", - .WorkMode = "Remote" - }, - New Employee With { - .EmployeeID = 73166, - .FullName = "Noah Duboisa", - .JobTitle = "Software Engineer", - .Department = "Engineering", - .Country = "Japan", - .TimeZone = "JST (UTC+9)", - .WorkMode = "On-site" - }, - New Employee With { - .EmployeeID = 55891, - .FullName = "Carlos García", - .JobTitle = "DevOps Engineer", - .Department = "IT", - .Country = "Spain", - .TimeZone = "CET (UTC+1)", - .WorkMode = "Remote" - } - } - - Me.radGridView1.DataSource = employees - Me.radGridView1.AutoSizeColumnsMode = GridViewAutoSizeColumnsMode.Fill - End Sub -End Class -```` - -Press `F5` to run the application. If the setup is correct, the form opens and `RadGridView` displays the sample employee data. - ->caption Figure 6: The completed sample application - -![Running WinForms application with RadGridView displaying sample employee data](images/gridview-overview.png) - -## Next Steps - -Now that Telerik UI for WinForms is running in your project, you can explore control features, customize behavior, or change the visual appearance: +You can also add components programmatically: -- [Explore control features]({%slug winforms/getting-started/explore-control-features%}) -- [Preview and change control appearance]({%slug winforms/getting-started/change-control-appearance%}) -- [Continue with additional next steps]({%slug winforms/getting-started/next-steps%}) +```C# +RadGridView radGridView1 = new RadGridView(); +radGridView1.Columns.Add("Column1"); +radGridView1.Columns.Add("Column2"); +this.Controls.Add(radGridView1); +``` +```VB +Dim radGridView1 As New RadGridView() +radGridView1.Columns.Add("Column1") +radGridView1.Columns.Add("Column2") +Me.Controls.Add(radGridView1) +``` -## Utilizing the Telerik AI Tools +2. Next, bind the control to sample data. +3. Press `F5` to build and run the application. -Telerik UI for WinForms offers AI-powered development assistance through a unified [MCP (Model Context Protocol) server]({%slug ai-overview%}). It provides context-aware guidance directly in your IDE and can help automate repetitive tasks while you explore the library and build applications faster. +## Next Steps -If you want to start using the Telerik AI tool, see [Getting Started with the Telerik UI for WinForms AI Coding Assistant]({%slug ai-mcp-server%}). + + + + + + + + + + + + + + ## See Also diff --git a/getting-started/images/chat_dark_large.svg b/getting-started/images/chat_dark_large.svg new file mode 100644 index 000000000..ba4d37fc9 --- /dev/null +++ b/getting-started/images/chat_dark_large.svg @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/getting-started/images/chat_light_large.svg b/getting-started/images/chat_light_large.svg new file mode 100644 index 000000000..466efc457 --- /dev/null +++ b/getting-started/images/chat_light_large.svg @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/getting-started/images/control-properties-in-form-designer.PNG b/getting-started/images/control-properties-in-form-designer.PNG deleted file mode 100644 index 0ef6e6230..000000000 Binary files a/getting-started/images/control-properties-in-form-designer.PNG and /dev/null differ diff --git a/getting-started/images/data_highlight_dark_large.svg b/getting-started/images/data_highlight_dark_large.svg new file mode 100644 index 000000000..3716ee815 --- /dev/null +++ b/getting-started/images/data_highlight_dark_large.svg @@ -0,0 +1,258 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/getting-started/images/data_highlight_light_large.svg b/getting-started/images/data_highlight_light_large.svg new file mode 100644 index 000000000..2892a7883 --- /dev/null +++ b/getting-started/images/data_highlight_light_large.svg @@ -0,0 +1,258 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/getting-started/images/editor_ai_integration_dark_large.svg b/getting-started/images/editor_ai_integration_dark_large.svg new file mode 100644 index 000000000..fb641e18b --- /dev/null +++ b/getting-started/images/editor_ai_integration_dark_large.svg @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/getting-started/images/editor_ai_integration_light_large.svg b/getting-started/images/editor_ai_integration_light_large.svg new file mode 100644 index 000000000..77671d0c1 --- /dev/null +++ b/getting-started/images/editor_ai_integration_light_large.svg @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/getting-started/images/grid_ai_chat_integration_dark_large.svg b/getting-started/images/grid_ai_chat_integration_dark_large.svg new file mode 100644 index 000000000..eb09e06be --- /dev/null +++ b/getting-started/images/grid_ai_chat_integration_dark_large.svg @@ -0,0 +1,323 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/getting-started/images/grid_ai_chat_integration_light_large.svg b/getting-started/images/grid_ai_chat_integration_light_large.svg new file mode 100644 index 000000000..ec9c1f5f1 --- /dev/null +++ b/getting-started/images/grid_ai_chat_integration_light_large.svg @@ -0,0 +1,323 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/getting-started/images/gridview-overview.png b/getting-started/images/gridview-overview.png deleted file mode 100644 index 66112e54e..000000000 Binary files a/getting-started/images/gridview-overview.png and /dev/null differ diff --git a/getting-started/images/theming_dark_large.svg b/getting-started/images/theming_dark_large.svg new file mode 100644 index 000000000..acb15e34f --- /dev/null +++ b/getting-started/images/theming_dark_large.svg @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/getting-started/images/themingt_light_large.svg b/getting-started/images/themingt_light_large.svg new file mode 100644 index 000000000..a5954f53b --- /dev/null +++ b/getting-started/images/themingt_light_large.svg @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/getting-started/next-steps.md b/getting-started/next-steps.md deleted file mode 100644 index a9997c0b3..000000000 --- a/getting-started/next-steps.md +++ /dev/null @@ -1,66 +0,0 @@ ---- -title: Next Steps -page_title: Next Steps -description: The list of resources in this article can help you get a better understanding of how Telerik WinForms controls work and help you get the most of them. -slug: winforms/getting-started/next-steps -tags: get,started,next,steps -published: True -position: 3 ---- - -# Next Steps - -Now that you have the Telerik UI for WinForms controls running in your project, the list of resources below can help you get a better understanding of how they work and help you get the most of them. - -If you are just getting started, you can find guidance in the following articles: - -* [First Steps]({% slug winforms/getting-started/first-steps %}) -* [Explore control features]({% slug winforms/getting-started/explore-control-features %}) -* [Preview and Change control appearance]({%slug winforms/getting-started/change-control-appearance%}) - -### More Learning Resources - -You don't need all of this immediately, but you can use this list as a starting point for future reference. - -Video Tutorials -* [Progress Virtual Classroom](https://www.telerik.com/account/support/virtual-classroom) - -Installation -* [Installing On Your Computer]({%slug winforms/installation-deployment-and-distribution/installing-on-your-computer%}) -* [Download Product Files]({%slug winforms/installation-deployment-and-distribution/download-product-files%}) -* [Major and Minor releases]({%slug winforms/getting-started/next-steps%}) -* [Updating Assemblies in a Project]({%slug winforms/installation-deployment-and-distribution/updating-assemblies-in-a-project%}) -* [Upgrade API Analyzer tool]({%slug upgrade-api-analyzer%}) - -Appearance -* [Change Control Appearance]({% slug winforms/tools/visual-style-builder %}) -* [Preview Custom Theme]({% slug winforms/tools/themeviewer %}) -* [Custom Shape Editor]({% slug winforms/tools/shapeeditor %}) - -Additional Tools and Resources -* [WinForms SDK](https://github.com/telerik/winforms-sdk) -* [Element Hierarchy Editor]({%slug winforms/tools/element-hierarchy-editor%}) -* [Control Spy]({%slug winforms/tools/controlspy%}) -* [Cloud Integration]({%slug cloud-services/overview%}) -* [Developer Focused Examples]({%slug winforms/developer-focused-examples%}) - -Getting started articles - -||||| -|----|----|----|----| -|[RadButton]({%slug winforms/buttons/button/getting-started%})|[RadCheckBox]({%slug winforms/buttons/checkbox/getting-started%})|[RadDropDownButton]({%slug winforms/buttons/dropdownbutton/getting-started%})|[RadRadioButton]({%slug winforms/buttons/radiobutton/getting-started%})| -|[RadRepeatButton]({%slug winforms/buttons/repeatbutton/working-with-radrepeatbutton%})|[RadSplitButton]({%slug winforms/buttons/splitbutton/working-with-radsplitbutton-items%})|[RadToggleButton]({%slug winforms/buttons/togglebutton/getting-started%})|[RadToggleSwitch]({%slug winforms/buttons/toggleswitch/getting-started%})| -|[RadBindingNavigator]({%slug winforms/bindingnavigator/getting-started%})|[RadCalendar]({%slug winforms/calendar/getting-started%})|[RadCardView]({%slug winforms/cardview/getting-started%})|[RadCarousel]({%slug winforms/carousel%})| -|[RadClock]({%slug winforms/clock/getting-started%})|[RadCommandBar]({%slug winforms/commandbar/getting-started%})|[RadDataEntry]({%slug winforms/dataentry/getting-started%})|[RadDataLayout]({%slug winforms/datalayout/getting-started%})| -|[RadDesktopAlert]({%slug winforms/desktopalert/gettingstarted%})|[RadDiagram]({%slug winforms/diagram/getting-started%})|[RadDock]({%slug winforms/dock/getting-started%})|[RadDropDownList]({%slug winforms/dropdown-listcontrol-and-checkeddropdownlist/dropdownlist/getting-started%})| -|[RadListControl]({%slug winforms/dropdown-listcontrol-and-checkeddropdownlist/listcontrol/getting-started%})|[RadCheckedDropDownList]({%slug winforms/dropdown-listcontrol-and-checkeddropdownlist/checkeddropdownlist/getting-started%})|[RadAutoCompleteBox]({%slug winforms/editors/autocompletebox/getting-started%})|[RadBrowseEditor]({%slug winforms/editors/browseeditor/getting-started%})| -|[RadColorBox]({%slug winforms/editors/colorbox/getting-started%})|[RadDateTimePicker]({%slug winforms/editors/datetimepicker/getting-started%})|[RadMaskedEditBox]({%slug winforms/editors/maskededitbox/getting-started%})|[RadPopupEditor]({%slug winforms/editors/popupeditor/getting-started%})| -|[RadSpinEditor]({%slug winforms/editors/spineditor/getting-started%})|[RadTextBoxControl]({%slug winforms/editors/textboxcontrol/getting-started%})|[RadTimePicker]({%slug winforms/editors/timepicker/getting-started%})|[RadColorDialog]({%slug winforms/forms-and-dialogs/colordialog/getting-started%})| -|[RadForm]({%slug winforms/forms-and-dialogs/form/getting-started%})|[RadMessageBox]({%slug winforms/forms-and-dialogs/messagebox/getting-started%})|[RadRibbonForm]({%slug winforms/forms-and-dialogs/ribbonform/getting-started%})|[ShapedForm]({%slug winforms/forms-and-dialogs/shapedform/getting-started%})| -|[RadStatusStrip]({%slug winforms/forms-and-dialogs/statusstrip/gettingstarted%})|[RadBulletGraph]({%slug winforms/gauges/bulletgraph/getting-started%})|[RadLinearGauge]({%slug winforms/gauges/lineargauge/getting-started%})|[RadRadialGauge]({%slug winforms/gauges/radialgauge/getting-started%})| -|[RadGridView]({%slug winforms/gridview/getting-started%})|[RadLayoutControl]({%slug winforms/layoutcontrol/getting-started%})|[RadListView]({%slug winforms/listview/getting-started%})|[RadMenu]({%slug winforms/menus/menu/getting-started%})| -|[RadCollapsiblePanel]({%slug winforms/panels-and-labels/collapsiblepanel/getting-started%})|[RadPanorama]({%slug winforms/panorama/getting-started%})|[RadPdfViewer]({%slug winforms/pdfviewer/getting-started%})|[RadPropertyGrid]({%slug winforms/propertygrid/getting-started%})| -|[RadRangeSelector]({%slug winforms/rangeselector/getting-started%})|[RadRibbonBar]({%slug winforms/ribbonbar/getting-started%})|[RadRichTextEditor]({%slug winforms/richtexteditor-/getting-started%})|[RadRotator]({%slug winforms/rotator/getting-started%})| -|[RadSpellChecker]({%slug winforms/spellchecker/getting-started%})|[RadSplitContainer]({%slug winforms/splitcontainer/getting-started%})|[RadProgressBar]({%slug winforms/track-and-status-controls/progressbar/getting-started%})|[RadRating]({%slug winforms/track-and-status-controls/rating/getting-started%})|[RadScrollBar]({%slug winforms/track-and-status-controls/scrollbar/getting-started%})|[RadTrackBar]({%slug winforms/track-and-status-controls/trackbar/getting-started%})|[RadWaitingBar]({%slug winforms/track-and-status-controls/waitingbar/getting-started%}) -|[RadTreeMap]({%slug winforms-treemap-getting-started%})|[RadTreeView]({%slug winforms/treeview/getting-started%})|[RadVirtualGrid]({%slug winforms/virtualgrid/getting-started%})|[RadChartView]({%slug winforms/chartview/getting-started%})|[RadCheckedListBox]({%slug winforms/checkedlistbox/getting-started%})| -[FileDialogs]({%slug winforms/file-dialogs/overview%})|[RadDomainUpDown]({%slug winforms/editors/domainupdown/overview%}) diff --git a/getting-started/video-onboarding.md b/getting-started/video-onboarding.md index f18a8648b..df10d0b44 100644 --- a/getting-started/video-onboarding.md +++ b/getting-started/video-onboarding.md @@ -5,13 +5,12 @@ description: "Get started with Telerik UI for WinForms by following a step-by-st slug: getting-started-video-onboarding tags: onboarding,video,virtual,classroom,course,learning published: True -position: 10 +position: 1 --- # Video Onboarding -All users with an active trial or commercial license have access to a [Telerik UI for WinForms getting started video course](https://learn.telerik.com/learn/course/17/Telerik%2520UI%2520for%2520WinForms) available in [Telerik's Virtual Classroom](https://learn.telerik.com/learn). -The training course is developed to help you get started with the Telerik UI for WinForms components and features. It aims to put you in the shoes of an engineer who adds new features to an existing application. +Telerik UI for WinForms offers a comprehensive [video getting started course](https://www.telerik.com/support/video-courses) available to all developers. This class is designed to help you get started with the Telerik UI for WinForms components and features. It aims to put you in the shoes of an engineer who adds new features to an existing application. {% if site.has_cta_panels == true %} {% include cta-panel-introduction.html %} @@ -33,17 +32,13 @@ This video explains the details around the project you will be modifying—w ## Onboarding Modules -The Telerik UI for WinForms technical online training has an approximate duration of 2 hours and is split into eight modules with the following learning path: +The [Telerik UI for WinForms technical online training](https://www.youtube.com/playlist?list=PLvmaC-XMqeBYZUfnE5_lSGtGAsEynVL4C) has an approximate duration of 2 hours and is split into eight modules with the following learning path: -* **Chapter 1: Introduction** (Course overview, best practices, benefits of Telerik UI for WinForms, course prerequisites) -* **Chapter 2: Sample Demo Applications** (Create sample application) -* **Chapter 3: Basic UI Components** (Working with containers, input controls and applying a theme) -* **Chapter 4: Charts** (Working with charts in order to visualize data) -* **Chapter 5: Grid** (Working with data grid) -* **Chapter 6: Scheduler** (Working with scheduler component to plan tasks and meetings) -* **Chapter 7: Reporting** (Working with the report viewer component) -* **Chapter 8: Styling and Themes** (Applying Telerik themes and customizing Telerik components) -* **Chapter 9: Conclusion** - -If you wish to learn more and continue with the video onboarding, [enroll in the training](https://learn.telerik.com/learn/course/17/Telerik%2520UI%2520for%2520WinForms) from the [Virtual Classroom](https://learn.telerik.com/learn). - +* **Chapter 1: Introduction to Telerik UI for WinForms: Best Practices and Prerequisites** (Course overview, best practices, benefits of Telerik UI for WinForms, prerequisites) +* **Chapter 2: Getting Started with Telerik UI for WinForms** (Create sample application) +* **Chapter 3: From Input Components to Spreadsheet and Styling with Telerik UI for WinForms** (explore how to integrate essential input components, additional UI controls, and the Spreadsheet component) +* **Chapter 4: Mastering Telerik UI for WinForms Charts: From Basics to Advanced Features** (Working with charts in order to visualize data) +* **Chapter 5: Setting up Telerik UI for WinForms Grid and Key Features** (Working with data grid and key features) +* **Chapter 6: Implementing Scheduler Functionality in Telerik UI for WinForms** (Working with scheduler component to plan tasks and meetings) +* **Chapter 7: Building Reports in Telerik UI for WinForms** (Working with the report viewer component) +* **Chapter 8: Customizing Themes in Telerik UI for WinForms** (Applying Telerik themes and customizing Telerik components) \ No newline at end of file diff --git a/installation-and-upgrades/api-analyzer.md b/installation-and-upgrades/api-analyzer.md index 4ee37ed4f..7abd0fe7a 100644 --- a/installation-and-upgrades/api-analyzer.md +++ b/installation-and-upgrades/api-analyzer.md @@ -4,8 +4,8 @@ page_title: Upgrade API Analyzer tool - Telerik UI for WinForms description: This article show how you can use the Upgrade API Analyzer tool in order to easily upgrade your application. slug: upgrade-api-analyzer tags: api, analyzer, upgrade -published: True -position: 11 +published: False +position: 15 --- # Telerik Upgrade API Analyzer diff --git a/installation-and-upgrades/assemblies-version.md b/installation-and-upgrades/assemblies-version.md deleted file mode 100644 index af97d1b7f..000000000 --- a/installation-and-upgrades/assemblies-version.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: Assembly Version -page_title: Assembly Version - Installation Deployment and Distribution -description: Assembly Version -slug: assemblies-version -tags: install,nuget -published: True -position: 5 ---- - -# Assembly Version - -After installing the Telerik UI for WinForms suite, you will find different assemblies versions within the installation folder (there are separate sub folders available for each .Net version). For example, the installation folder will contain the following assembly versions when the 2023.3.1114 Telerik version is installed: - -![Telerik UI for WinForms installation folder showing assemblies for different .NET versions](images/assemblies-version001.png) - ->note Each Bin folder contains all Telerik assemblies built against the respective .Net version. - -### Check assembly version - -To check the assembly version, right-click with mouse on the .dll file and select *Properties*. Then, navigate to the *Details tab*, where you will find the assembly version information: - -![Windows file Properties Details tab showing a Telerik UI for WinForms assembly version](images/assemblies-version002.png) - diff --git a/installation-and-upgrades/distributions.md b/installation-and-upgrades/distributions.md index 0644d5740..951f86926 100644 --- a/installation-and-upgrades/distributions.md +++ b/installation-and-upgrades/distributions.md @@ -5,7 +5,7 @@ description: Distributions slug: winforms/installation-deployment-and-distribution/distributions tags: distributions,versions published: True -position: 1 +position: 7 --- # Distributions @@ -41,5 +41,5 @@ This article dives into UI controls, focusing on their compatibility with Micros ## See Also -* [Assemblies Version]({%slug assemblies-version%}) +* [Assembly Version]({%slug winforms/installation-deployment-and-distribution/installing-on-your-computer%}#assembly-version) * [Available NuGet Packages]({%slug winforms-available-nugets%}) diff --git a/installation-and-upgrades/download-product-files.md b/installation-and-upgrades/download-product-files.md index 9dca59196..1f2244f1b 100644 --- a/installation-and-upgrades/download-product-files.md +++ b/installation-and-upgrades/download-product-files.md @@ -5,7 +5,7 @@ description: Learn how to download the source code, pdf documentation, different slug: winforms/installation-deployment-and-distribution/download-product-files tags: download,product,files published: True -position: 4 +position: 6 previous_url: installation-deployment-and-distribution-download-product-files --- diff --git a/installation-and-upgrades/images/account-generate-api-key.png b/installation-and-upgrades/images/account-generate-api-key.png new file mode 100644 index 000000000..4c03bc232 Binary files /dev/null and b/installation-and-upgrades/images/account-generate-api-key.png differ diff --git a/installation-and-upgrades/images/assemblies-version001.png b/installation-and-upgrades/images/assemblies-version001.png index 1f7be7c8d..3bc6c891d 100644 Binary files a/installation-and-upgrades/images/assemblies-version001.png and b/installation-and-upgrades/images/assemblies-version001.png differ diff --git a/installation-and-upgrades/images/assemblies-version002.png b/installation-and-upgrades/images/assemblies-version002.png index 62ed6ec54..c991d74bc 100644 Binary files a/installation-and-upgrades/images/assemblies-version002.png and b/installation-and-upgrades/images/assemblies-version002.png differ diff --git a/installation-and-upgrades/images/installation-deployment-and-distribution-install-using-nuget003.png b/installation-and-upgrades/images/installation-deployment-and-distribution-install-using-nuget003.png index 8299390bf..df6300ad9 100644 Binary files a/installation-and-upgrades/images/installation-deployment-and-distribution-install-using-nuget003.png and b/installation-and-upgrades/images/installation-deployment-and-distribution-install-using-nuget003.png differ diff --git a/installation-and-upgrades/images/installation-deployment-and-distribution-install-using-nuget004.png b/installation-and-upgrades/images/installation-deployment-and-distribution-install-using-nuget004.png index f986f7bdd..904cfeb63 100644 Binary files a/installation-and-upgrades/images/installation-deployment-and-distribution-install-using-nuget004.png and b/installation-and-upgrades/images/installation-deployment-and-distribution-install-using-nuget004.png differ diff --git a/installation-and-upgrades/images/installation-deployment-and-distribution-install-using-nuget005.png b/installation-and-upgrades/images/installation-deployment-and-distribution-install-using-nuget005.png index 472346ee2..a7aa1edd7 100644 Binary files a/installation-and-upgrades/images/installation-deployment-and-distribution-install-using-nuget005.png and b/installation-and-upgrades/images/installation-deployment-and-distribution-install-using-nuget005.png differ diff --git a/installation-and-upgrades/images/installation-deployment-and-distribution-install-using-nuget006.png b/installation-and-upgrades/images/installation-deployment-and-distribution-install-using-nuget006.png index f938e6d99..819cfd4b1 100644 Binary files a/installation-and-upgrades/images/installation-deployment-and-distribution-install-using-nuget006.png and b/installation-and-upgrades/images/installation-deployment-and-distribution-install-using-nuget006.png differ diff --git a/visual-studio-integration/images/installation-deployment-and-distribution-install-using-nuget008.png b/installation-and-upgrades/images/installation-deployment-and-distribution-install-using-nuget008.png similarity index 100% rename from visual-studio-integration/images/installation-deployment-and-distribution-install-using-nuget008.png rename to installation-and-upgrades/images/installation-deployment-and-distribution-install-using-nuget008.png diff --git a/visual-studio-integration/install-using-nuget.md b/installation-and-upgrades/install-using-nuget.md similarity index 98% rename from visual-studio-integration/install-using-nuget.md rename to installation-and-upgrades/install-using-nuget.md index 59b15d600..b53584dec 100644 --- a/visual-studio-integration/install-using-nuget.md +++ b/installation-and-upgrades/install-using-nuget.md @@ -5,14 +5,14 @@ description: This article describes how you can install the WinForms suite using slug: winforms/nuget tags: install,nuget published: True -position: 9 +position: 2 --- # Install using 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: +This article explains how to install the Telerik UI for WinForms suite using NuGet packages. You can obtain the NuGet packages in one of the following ways: * [Download Telerik UI for WinForms packages from NuGet.org (Recommended)](#download-from-nuget-org) * [Download Telerik UI for WinForms packages from the Telerik NuGet server](#download-from-the-telerik-nuget-server) diff --git a/installation-and-upgrades/installation.md b/installation-and-upgrades/installation.md new file mode 100644 index 000000000..4855148dd --- /dev/null +++ b/installation-and-upgrades/installation.md @@ -0,0 +1,67 @@ +--- +title: Installation +page_title: Setup the Telerik WinForms Telerik CLI - Installation, Setup, and Command Reference for Telerik UI for WinForms +description: Install and use the Telerik CLI to set up the Telerik NuGet feed, create WinForms projects from templates, and update Telerik UI for WinForms packages from the command line. +slug: installation +tags: telerik,cli,command line,cli,dotnet tool,nuget,setup,install,create project,update,template,winforms,telerik,getting started,environment +published: True +position: 1 +--- + +# Quick Start Installation + +The easiest way to install Telerik UI for WinForms is to use the [Telerik CLI]({%slug telerik-cli%}). This is a .NET global tool that automates common Telerik development tasks from the command line. + +## Setup Development Environment + +To set up the environment needed to start development with Telerik UI for WinForms, install the Telerik CLI tool and run the `setup` command. This will log you into your Telerik account, download the [Telerik UI for WinForms license key file]({%slug license-key%}), and set up the [Telerik NuGet package source]({%slug telerik-cli%}#set-up-telerik-nuget-feed). + +1. Open any terminal and install the Telerik CLI. + + ``` + dotnet tool install -g Telerik.CLI + ``` + +1. Call the `telerik setup winforms` command in the terminal. + + ``` + telerik setup winforms + ``` + +1. Use the __NuGet Package Manager__ to install the needed Telerik packages. For example, `Telerik.UI.for.WinForms.AllControls`. + + ``` + + ``` + +### Install License Key + +> This step is automatically executed when the `telerik setup winforms` command is invoked. + +To download and install a Telerik license key, you can use the `telerik license get-key` command. + +``` +telerik license get-key +``` + +### Setup Telerik NuGet Package Source + +> This step is automatically executed when the `telerik setup winforms` command is invoked. + +>important Starting with the Q3 2026 release, all Telerik UI for WinForms NuGet packages will also be available on NuGet.org. If you use nuget.org, you will not need to configure the Telerik NuGet server. + +To automatically configure the Telerik NuGet feed, you can use the `telerik nuget config` command. This adds a package source in the NuGet.config file that points to `https://nuget.telerik.com/v3/index.json`. + +``` +telerik nuget config +``` + +### Other Installation Options + +The __recommended installation approach__ is using __Telerik CLI__ and __NuGet packages__, as it is easier to use and maintain. In addition to that, Telerik distributes several more installation options: + +* [Install Telerik UI for WinForms from NuGet packages]({%slug winforms/nuget%}) + +* [Install Telerik UI for WinForms with the MSI installer]({%slug winforms/installation-deployment-and-distribution/installing-on-your-computer%}) + +* [Install Telerik UI for WinForms from Progress Control Panel]({%slug installing-from-progress-control-panel%}) \ No newline at end of file diff --git a/installation-and-upgrades/installing-from-progress-control-panel.md b/installation-and-upgrades/installing-from-progress-control-panel.md index 999dada45..5ed9e7b16 100644 --- a/installation-and-upgrades/installing-from-progress-control-panel.md +++ b/installation-and-upgrades/installing-from-progress-control-panel.md @@ -1,14 +1,14 @@ --- -title: Installing and Removing from Progress Control Panel -page_title: Installing and Removing from Progress Control Panel +title: Install from Progress Control Panel +page_title: Install from Progress Control Panel description: Installing and Removing from Progress Control Panel slug: installing-from-progress-control-panel tags: installing, control, panel published: True -position: 3 +position: 4 --- -# Installing from Progress Control Panel +# Install from Progress Control Panel The Telerik UI for WinForms controls can also be installed via the [Progress Control Panel](https://docs.telerik.com/controlpanel/introduction). diff --git a/installation-and-upgrades/installing-on-your-computer.md b/installation-and-upgrades/installing-on-your-computer.md index 827e1046e..8aa2ad284 100644 --- a/installation-and-upgrades/installing-on-your-computer.md +++ b/installation-and-upgrades/installing-on-your-computer.md @@ -1,11 +1,11 @@ --- -title: Installing On Your Computer -page_title: Installing On Your Computer -description: Read how you can install Telerik UI for WinForms on your computers and what actions are needed. +title: Install using MSI +page_title: Install using MSI +description: Read how you can install Telerik UI for WinForms on your computers by using MSI installer and what actions are needed. slug: winforms/installation-deployment-and-distribution/installing-on-your-computer tags: installing,on,your,computer published: True -position: 2 +position: 3 previous_url: installation-deployment-and-distribution-installing-on-your-computer --- @@ -21,9 +21,9 @@ The Telerik WinForms setup performs the following actions during the installatio * Checks the Visual Studio version(s) installed on the machine. We currently support Visual Studio 2005\*, 2008\*, 2010, 2012, 2013, 2015, 2017, 2019 and 2022 installations. ->note **R3 2018 SP1 (2018.3.1016)** is the latest version where the installer handles **VS 2005** and **VS 2008**. After this version, Telerik integration is installed on newer versions of Visual Studio. - ->note **R1 2021 SP1 (version 2021.1.204)** is the latest version where the installer handles **VS 2010**. +>tip **R3 2018 SP1 (2018.3.1016)** is the latest version where the installer handles **VS 2005** and **VS 2008**. After this version, Telerik integration is installed on newer versions of Visual Studio. +> +>**R1 2021 SP1 (version 2021.1.204)** is the latest version where the installer handles **VS 2010**. * Installs/adds all Telerik WinForms controls in the toolbox of Visual Studio @@ -34,8 +34,6 @@ The Telerik WinForms setup performs the following actions during the installatio * Installs Telerik UI for WinForms Examples -* Installs Telerik UI for WinForms Coded UI support for Visual Studio 2010 and 2012 - You can download the setup from your account (including older versions): [Download product files]({%slug winforms/installation-deployment-and-distribution/download-product-files%}) Please follow the steps below to install Telerik UI for WinForms from the .msi file: @@ -68,8 +66,16 @@ Please follow the steps below to install Telerik UI for WinForms from the .msi f ![Telerik UI for WinForms installer completion screen with the Launch Examples option](images/installation-deployment-and-distribution-installing-on-your-computer005.png) +## Assembly Version + +After installing the Telerik UI for WinForms suite, you will find different assemblies versions within the installation folder (there are separate sub folders available for each .Net version). For example, the installation folder will contain the following assembly versions when the 2026.3.812.48 Telerik version is installed: +![Telerik UI for WinForms installation folder showing assemblies for different .NET versions](images/assemblies-version001.png) +>note Each Bin folder contains all Telerik assemblies built against the respective .Net version. +### Check assembly version +To check the assembly version, right-click with mouse on the .dll file and select *Properties*. Then, navigate to the *Details tab*, where you will find the assembly version information: +![Windows file Properties Details tab showing a Telerik UI for WinForms assembly version](images/assemblies-version002.png) \ No newline at end of file diff --git a/installation-and-upgrades/major-and-minor-releases.md b/installation-and-upgrades/major-and-minor-releases.md index 4ea38f5ae..f371ba54b 100644 --- a/installation-and-upgrades/major-and-minor-releases.md +++ b/installation-and-upgrades/major-and-minor-releases.md @@ -5,7 +5,7 @@ description: Major and Minor releases slug: winforms/installation-deployment-and-distribution/major-and-minor-releases tags: major,and,minor,releases published: False -position: 2 +position: 8 previous_url: installation-deployment-and-distribution-vsx-major-and-minor-releases --- diff --git a/installation-and-upgrades/old-version-support-policy.md b/installation-and-upgrades/old-version-support-policy.md index eaa44f3ec..9e5968275 100644 --- a/installation-and-upgrades/old-version-support-policy.md +++ b/installation-and-upgrades/old-version-support-policy.md @@ -5,7 +5,7 @@ description: "Learn about the support policy on old versions, how bug fixes and slug: old_versions_support_policy tags: old, policy published: True -position: 12 +position: 16 --- # Earlier Versions Support Policy in UI for WinForms diff --git a/installation-and-upgrades/preview-releases.md b/installation-and-upgrades/preview-releases.md index 2c8b9909d..cf9253489 100644 --- a/installation-and-upgrades/preview-releases.md +++ b/installation-and-upgrades/preview-releases.md @@ -5,7 +5,7 @@ description: This article describes the Telerik WinForms Preview release and how slug: winforms/installation-deployment-and-distribution/preview-releases tags: using,the,hotfix,dlls,only, lib, latest, internal, build, preview published: True -position: 8 +position: 13 --- # Preview Release diff --git a/getting-started/telerik-cli.md b/installation-and-upgrades/telerik-cli.md similarity index 99% rename from getting-started/telerik-cli.md rename to installation-and-upgrades/telerik-cli.md index 17a9e795a..78f327f19 100644 --- a/getting-started/telerik-cli.md +++ b/installation-and-upgrades/telerik-cli.md @@ -2,10 +2,10 @@ title: Telerik CLI page_title: Telerik CLI - Installation, Setup, and Command Reference for Telerik UI for WinForms description: Install and use the Telerik CLI to set up the Telerik NuGet feed, create WinForms projects from templates, and update Telerik UI for WinForms packages from the command line. -slug: winforms/getting-started/telerik-cli +slug: telerik-cli tags: telerik,cli,command line,cli,dotnet tool,nuget,setup,install,create project,update,template,winforms,telerik,getting started,environment published: True -position: 2 +position: 5 tag: new --- diff --git a/installation-and-upgrades/trial.md b/installation-and-upgrades/trial.md index cc24727ee..a7ccc491f 100644 --- a/installation-and-upgrades/trial.md +++ b/installation-and-upgrades/trial.md @@ -5,7 +5,7 @@ description: Learn about the Trial license limitations and features for Telerik slug: winforms/installation-deployment-and-distribution/trial tags: trial, license, evaluation published: True -position: 7 +position: 12 --- # Trial License @@ -60,5 +60,5 @@ To remove all trial limitations and enable production deployment, purchase and u ## See Also -* [Assemblies Version]({%slug assemblies-version%}) +* [Assembly Version]({%slug winforms/installation-deployment-and-distribution/installing-on-your-computer%}#assembly-version) * [Available NuGet Packages]({%slug winforms-available-nugets%}) diff --git a/installation-and-upgrades/updating-assemblies-in-a-project.md b/installation-and-upgrades/updating-assemblies-in-a-project.md index 922b45de5..1a7c44e9f 100644 --- a/installation-and-upgrades/updating-assemblies-in-a-project.md +++ b/installation-and-upgrades/updating-assemblies-in-a-project.md @@ -5,7 +5,7 @@ description: Learn how to use a specific version of the Telerik UI for WinForms slug: winforms/installation-deployment-and-distribution/updating-assemblies-in-a-project tags: update, assemblies, project published: True -position: 9 +position: 14 --- # Updating Assemblies in a Project diff --git a/installation-and-upgrades/upgrade-project.md b/installation-and-upgrades/upgrade-project.md index 54a159589..2cdb56e4f 100644 --- a/installation-and-upgrades/upgrade-project.md +++ b/installation-and-upgrades/upgrade-project.md @@ -1,11 +1,11 @@ --- -title: How to Upgrade Telerik UI for WinForms Project -page_title: How to Upgrade Telerik UI for WinForms Project +title: Upgrade Project +page_title: Upgrade Project description: Learn how to use a specific version of the Telerik UI for WinForms suite in your project. slug: winforms/installation-deployment-and-distribution/upgrade-project tags: upgrade, update,Telerik, project, assemblies, NuGet, packages published: True -position: 6 +position: 11 --- # How to Upgrade Telerik UI for WinForms Project diff --git a/installation-and-upgrades/versions-upgrade.md b/installation-and-upgrades/versions-upgrade.md index a1b5e6bd9..2950a82ed 100644 --- a/installation-and-upgrades/versions-upgrade.md +++ b/installation-and-upgrades/versions-upgrade.md @@ -5,7 +5,7 @@ description: Learn how you can deal with one of the most common errors, after in slug: winforms/installation-deployment-and-distribution/versions-upgrade tags: install,nuget published: False -position: 4 +position: 9 redirect_to: /knowledge-base/versions-upgrade --- diff --git a/introduction.md b/introduction.md index ade371281..449100eb0 100644 --- a/introduction.md +++ b/introduction.md @@ -11,22 +11,21 @@ previous_url: overview, RadControlsForWinForms # Telerik UI for WinForms Overview -Telerik UI for WinForms is a commercial desktop UI suite for building data-heavy, line-of-business applications on .NET. Use this overview to choose a starting point, browse the available controls, and find the installation, styling, licensing, and support resources you need. +Telerik UI for WinForms is a commercial UI component suite for building modern, high-performance, data-driven desktop applications with .NET. Explore the available controls, get started with installation, and find guidance on styling, licensing, and support to help you build your application with Telerik UI for WinForms. The product includes more than 160 controls and tools for data entry, data visualization, navigation, document processing, and application styling. Start here when you need a quick map of the product and links to the most useful setup and learning content. -For a high-level product summary, visit the [Telerik UI for WinForms product page](https://www.telerik.com/products/winforms.aspx). - - +To learn more, visit the [Telerik UI for WinForms product page](https://www.telerik.com/products/winforms.aspx). ## Getting Started -If you are new to Telerik UI for WinForms, use this sequence to move from evaluation to a working project: +New to Telerik UI for WinForms? Try Telerik UI for WinForms controls and libraries in your projects and download our fully-functional [30-day trial version](https://www.telerik.com/try/ui-for-winforms). + + + +Follow these steps to go from a fresh install to a running application: [Telerik UI for WinForms Quick Start Tutorial]({%slug winforms/getting-started/first-steps%}) -1. Install the product and review the required assemblies in the [WinForms installation and deployment guide]({% slug winforms/installation-deployment-and-distribution/installing-on-your-computer %}). -2. Complete the [WinForms first-steps walkthrough]({% slug winforms/getting-started/first-steps %}) to create a sample project and add your first controls. -3. Browse the control categories in this article to identify the components that match your application requirements. -4. Review the styling, licensing, and support sections before you move the project into production. +Explore the [Control Catalog](#list-of-controls) below to find the components that best fit your scenario. ## List of Controls @@ -195,33 +194,32 @@ The control catalog is grouped by common application scenarios. Start with the c - ## Trial and Commercial License ->important -> Use a commercial license before you deploy Telerik UI for WinForms in a production application. +Telerik UI for WinForms is a commercial UI library. You are welcomed to evaluate +a fully-functional 30-day trial that unlocks every control and gives you direct access to technical support from the people who build the product. -Telerik UI for WinForms is a commercial UI library. You can evaluate the full product with a free 30-day trial that also gives you access to technical support from the product team. +When you're ready to move forward, please purchase a [Telerik UI for WinForms Subscription license](https://www.telerik.com/purchase/individual/winforms.aspx). This keeps your team current and supported: acess to every new release, priority technical support, and the [AI Coding Assistant]({%slug ai-overview%}) are included for as long as your subscription is active. -When you are ready to ship an application, [purchase a Telerik UI for WinForms license](https://www.telerik.com/purchase.aspx) and review the [Telerik UI for WinForms license agreement](https://www.telerik.com/purchase/license-agreement/winforms-dlw-s) so you understand the usage terms. +Take a moment to review the [license agreement](https://www.telerik.com/purchase/license-agreement/winforms-dlw-s) so your deployment is fully compliant from day one. ## Support Options -Choose the support channel that matches the type of help you need: +Pick the support channel that matches the kind of help you need: -* Use the [Telerik UI for WinForms AI Coding Assistant]({%slug ai-overview%}) when you want example code and product-specific implementation guidance. -* Submit a case through the [Telerik support ticket system](https://www.telerik.com/account/support-tickets?pid=523&supcId=daf62541-57e0-b84c-8b5e-da9851c61873&fbp=false) for technical issues that require direct help from the product team. -* Visit the [Telerik UI for WinForms community forums](https://www.telerik.com/forums/winforms) for community discussions and general product questions. -* Review the [WinForms feedback portal and roadmap](https://feedback.telerik.com/winforms) to track planned work, vote on feature requests, and monitor known issues. -* Contact the [Progress Services consulting team](https://www.progress.com/services) if you need a custom implementation, migration help, or architecture guidance. -* Read [how to get the most from Telerik UI for WinForms support]({%slug submit-support-tickets%}) before you open a ticket. +* **Code and implementation guidance** — Ask the [Telerik UI for WinForms AI Coding Assistant]({%slug ai-overview%}) for example code and product-specific recommendations. +* **Technical issues** — Submit a case through the [Telerik support ticket system](https://www.telerik.com/account/support-tickets?pid=523&supcId=daf62541-57e0-b84c-8b5e-da9851c61873&fbp=false) to get direct help from the product team. +* **Community discussions and general questions** — Join the [Telerik UI for WinForms community forums](https://www.telerik.com/forums/winforms). +* **Feature requests and known issues** — Check the [WinForms feedback portal](https://feedback.telerik.com/winforms) to track planned work and vote on ideas. +* **Stay ahead to what's comming** - Check the [Roadmap](https://www.telerik.com/support/whats-new/winforms/roadmap) to see what's planned for upcoming releases. +* **Custom implementation or architecture guidance** — Reach out to the [Progress Services consulting team](https://www.progress.com/services) for custom app development and hands-on expertise. ## Learning Resources Use these resources to learn the product faster: * Read the [Telerik UI for WinForms Knowledge Base](https://docs.telerik.com/devtools/winforms/knowledge-base) for troubleshooting guidance, integration examples, and focused how-to articles. -* Use the [Telerik Virtual Classroom](https://www.telerik.com/account/support/virtual-classroom) for guided onboarding and product training. +* Explore [Video Onboarding course]({%slug getting-started-video-onboarding%}) for guided onboarding and product training. * Explore the [Telerik UI for WinForms demos](https://demos.telerik.com/winforms/) to see controls and features in running examples. ## Installation and Deployment @@ -236,19 +234,19 @@ Use the [WinForms styling and appearance guide]({%slug winforms/themes/using-def If this article or any related page is missing information, you can help improve the documentation in several ways: -### Report a Documentation Issue +#### Submit a New Issue at GitHub -Open an issue in the [winforms-docs GitHub repository](https://github.com/telerik/winforms-docs/issues) when you find incorrect information, broken links, or gaps in coverage. Include a descriptive title, the page URL, and the closest section anchor so the documentation team can reproduce the problem quickly. +Found incorrect information, a broken link, or a gap in coverage? [Open an issue](https://github.com/telerik/winforms-docs/issues) in the winforms-docs GitHub repository. Include a descriptive title, the page URL, and the closest section anchor so the documentation team can reproduce the problem quickly. -### Submit a Documentation Update +#### Submit a Documentation Update at GitHub -If you want to fix the issue directly, fork the repository and submit a pull request. Follow the [winforms-docs contribution instructions](https://github.com/telerik/winforms-docs/blob/master/README.md) to prepare your change and use standard Markdown so the review is easier. +Prefer to fix it yourself? Fork the repository and submit a pull request. Follow the [winforms-docs contribution instructions](https://github.com/telerik/winforms-docs/blob/master/README.md) to prepare your change and use standard Markdown so the review goes smoothly. -### Share Feedback in the Forums +#### Share Feedback in the Forum -Post feedback in the [Telerik UI for WinForms community forums](https://www.telerik.com/forums/winforms) when you want to discuss a documentation issue with the community or the support team. Use this path when you also want broader product discussion, but expect issue resolution to take longer than a direct GitHub report. +Want to discuss a documentation issue rather than file a report? Post in the [Telerik UI for WinForms community forums](https://www.telerik.com/forums/winforms) to loop in the community and the support team. This path is best for broader product discussion, but expect issue resolution to take longer than a direct GitHub report. -Thank you for helping improve the Telerik UI for WinForms documentation. +Thank you for helping us make the Telerik UI for WinForms documentation better. ## See Also diff --git a/licensing/license-key.md b/licensing/license-key.md index c7ff067bc..839a9c7f8 100644 --- a/licensing/license-key.md +++ b/licensing/license-key.md @@ -58,7 +58,7 @@ To install your Telerik license key by using the [Progress Control Panel](https: ### Installing a License Key with Telerik CLI -Use [Telerik CLI]({%slug winforms/getting-started/telerik-cli%}#get-license-key) when you prefer a command-line workflow or want to download the license key without opening Visual Studio. The `telerik license get-key` command downloads the latest `telerik-license.txt` file to `%AppData%\Telerik` for the current user account. +Use [Telerik CLI]({%slug telerik-cli%}#get-license-key) when you prefer a command-line workflow or want to download the license key without opening Visual Studio. The `telerik license get-key` command downloads the latest `telerik-license.txt` file to `%AppData%\Telerik` for the current user account. ## Manual License Key Installation diff --git a/developer-focused-examples.md b/telerik-presentation-framework/developer-focused-examples.md similarity index 100% rename from developer-focused-examples.md rename to telerik-presentation-framework/developer-focused-examples.md diff --git a/section-508-compliance.md b/telerik-presentation-framework/section-508-compliance.md similarity index 100% rename from section-508-compliance.md rename to telerik-presentation-framework/section-508-compliance.md diff --git a/visual-studio-integration/images/installation-deployment-and-distribution-install-using-nuget002.png b/visual-studio-integration/images/installation-deployment-and-distribution-install-using-nuget002.png deleted file mode 100644 index 4af5b9f73..000000000 Binary files a/visual-studio-integration/images/installation-deployment-and-distribution-install-using-nuget002.png and /dev/null differ diff --git a/visual-studio-integration/images/installation-deployment-and-distribution-install-using-nuget003.png b/visual-studio-integration/images/installation-deployment-and-distribution-install-using-nuget003.png deleted file mode 100644 index df6300ad9..000000000 Binary files a/visual-studio-integration/images/installation-deployment-and-distribution-install-using-nuget003.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 deleted file mode 100644 index 904cfeb63..000000000 Binary files a/visual-studio-integration/images/installation-deployment-and-distribution-install-using-nuget004.png and /dev/null 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 deleted file mode 100644 index a7aa1edd7..000000000 Binary files a/visual-studio-integration/images/installation-deployment-and-distribution-install-using-nuget005.png and /dev/null differ diff --git a/installation-and-upgrades/images/migrate-assemblies-nuget001.png b/visual-studio-integration/images/migrate-assemblies-nuget001.png similarity index 100% rename from installation-and-upgrades/images/migrate-assemblies-nuget001.png rename to visual-studio-integration/images/migrate-assemblies-nuget001.png diff --git a/installation-and-upgrades/images/migrate-assemblies-nuget002.png b/visual-studio-integration/images/migrate-assemblies-nuget002.png similarity index 100% rename from installation-and-upgrades/images/migrate-assemblies-nuget002.png rename to visual-studio-integration/images/migrate-assemblies-nuget002.png diff --git a/installation-and-upgrades/images/migrate-assemblies-nuget003.png b/visual-studio-integration/images/migrate-assemblies-nuget003.png similarity index 100% rename from installation-and-upgrades/images/migrate-assemblies-nuget003.png rename to visual-studio-integration/images/migrate-assemblies-nuget003.png diff --git a/installation-and-upgrades/images/migrate-assemblies-nuget004.png b/visual-studio-integration/images/migrate-assemblies-nuget004.png similarity index 100% rename from installation-and-upgrades/images/migrate-assemblies-nuget004.png rename to visual-studio-integration/images/migrate-assemblies-nuget004.png diff --git a/installation-and-upgrades/migrate-assemblies-to-nuget.md b/visual-studio-integration/migrate-assemblies-to-nuget.md similarity index 100% rename from installation-and-upgrades/migrate-assemblies-to-nuget.md rename to visual-studio-integration/migrate-assemblies-to-nuget.md diff --git a/winformslab/images/winformslab-smart-ai-components_000.gif b/winformslab/images/winformslab-smart-ai-components_000.gif deleted file mode 100644 index 8b92c32f7..000000000 Binary files a/winformslab/images/winformslab-smart-ai-components_000.gif and /dev/null differ diff --git a/winformslab/images/winformslab-smart-ai-components_001.gif b/winformslab/images/winformslab-smart-ai-components_001.gif deleted file mode 100644 index 32a7dab5f..000000000 Binary files a/winformslab/images/winformslab-smart-ai-components_001.gif and /dev/null differ diff --git a/winformslab/smart-ai-components.md b/winformslab/smart-ai-components.md deleted file mode 100644 index 9b71dbc38..000000000 --- a/winformslab/smart-ai-components.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Smart AI Components -page_title: Smart AI Components -description: Telerik Smart (AI) Components is a set of integration examples that show how to use the Telerik UI for WinForms controls in AI-based scenario. -slug: winformslab-smart-ai-components -tags: winforms,lab,smart,ai,prompt,components,services -position: 0 ---- - -# Smart AI Components - -Telerik Smart (AI) Components is a set of integration examples that show how to use the Telerik UI for WinForms controls in AI-based scenario. Therefore, making it easy to add AI-powered features to your .NET applications without extra effort. Smart(AI) Components are currently in an experimental phase. - -The projects showing the smart components can be found at [https://github.com/telerik/telerik-smartai-components/tree/master](https://github.com/telerik/telerik-smartai-components/tree/master). - -To run the examples, you should first [aquire key credentials](https://learn.microsoft.com/en-us/azure/ai-services/openai/reference#authentication) required to access the end point of the [Azure OpenAI services](https://learn.microsoft.com/en-us/azure/ai-services/openai/reference). - -## Smart RichTextEditor - -This example shows how to integrate the Azure OpenAI services with __RadRichTextEditor for WinForms__. Typing in the document will trigger a call to the OpenAI services and append the returned result into the document. - -![Telerik WinForms Smart RadRichTextEditor](images/winformslab-smart-ai-components_000.gif) - -## Smart Spreadsheet - -This example shows how to integrate the Azure OpenAI services with __RadSpreadsheet for WinForms__. In the example, you can use the custom `AIFunction` to get the result of the cells automatically. - -![Telerik WinForms Smart RadSpreadsheet](images/winformslab-smart-ai-components_001.gif) - -## See Also -* [Telerik UI for WinForms Getting Started]({%slug winforms/getting-started/first-steps%}) \ No newline at end of file