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.

Best Answer

  • 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>

Answers

  • 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.

  • 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.