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

  • nick.zincone
    nick.zincone admin
    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.

Welcome!

It looks like you're new here. Sign in or register to get started.

Welcome!

It looks like you're new here. Sign in or register to get started.