question

Upvotes
Accepted
0 0 0 0

Refinitiv Data Library for .Net in a Windows Form application

Hi everyone,

I am using Refinitiv Data Library for .Net with C#, connecting to a Desktop application on Eikon.

I successfully compiled the library examples and they all work nicely.

All the examples are based on Console mode whilst I do need to write a Windows form application.

Can anyone provide an example as a complete Visual Studio solution files ?

Thanks in advance.

refinitiv-dataplatform-eikon#technology.net
icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Upvote
Accepted
18.7k 85 39 63

Hi @tiziano.barban

No problem. All you need to add is the "Refinitiv.Data.Content" package from NuGet - basically the same as what you see in the example packages. Note: this is presently a "prerelease" so ensure you click the "Include prerelease" when you browse for NuGet packages.

Here is the .csproj I created:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>WinExe</OutputType>
    <TargetFramework>net6.0-windows</TargetFramework>
    <Nullable>disable</Nullable>
    <UseWindowsForms>true</UseWindowsForms>
    <ImplicitUsings>enable</ImplicitUsings>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Refinitiv.Data.Content" Version="1.0.0-beta5" />
  </ItemGroup>

</Project>
icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Upvote
18.7k 85 39 63

Hi @tiziano.barban

There is no example readily available specific to a Windows form application. However, I just quickly mocked up one with VS 2022. I would suggest you create a basic "Windows Forms App". After I did this, I created a simple UI:

1700491121280.png

The code behind looks like this:

 public partial class Form1 : Form
    {
        private ISession _session;

        public Form1()
        {
            InitializeComponent();
        }

        private async void button1_Click(object sender, EventArgs e)
        {
            if (_session is null)
            {
                _session = DesktopSession.Definition().GetSession().OnState((state, msg, s) =>
                                                            Debug.WriteLine($"{DateTime.Now}: State: {state}. {msg}"))
                                                        .OnEvent((eventCode, msg, s) =>
                                                            Debug.WriteLine($"{DateTime.Now}: Event: {eventCode}. {msg}"));

                var state = await _session.OpenAsync();
                if (state == Session.State.Opened)
                {
                    button1.Enabled = false;
                    button2.Enabled = true;
                }
            }
        }

        private async void button2_Click(object sender, EventArgs e)
        {
            var request = Search.Definition().View(Search.View.SearchAll)
                                 .Query("CEO Apple")
                                 .Select("DocumentTitle, DTSubjectName, BondType, DTSimpleType, DTCharacteristics");

            var response = await request.GetDataAsync();
            if (response.IsSuccess)
            {
                Debug.WriteLine($"Received a total of {response.Data.Total} hits");
            }
        }
    }

The application simply opens a session with the desktop. Once opened, you can request for some simple data. Output will appear in the debug window.


Hope this helps.


1700491121280.png (8.0 KiB)
icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Upvotes
0 0 0 0

That's really great, but could you please explain in detail which package/library should I add to the project or, best of all, could you please share the .csproj file so that I can use it ?

Thanks in advance.

icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Write an Answer

Hint: Notify or tag a user in this post by typing @username.

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.