4

I don't understand how to create a chart control and place the chart in an existing form. All the examples I found on the web show the chart in a new form but I would like to add the chart to one of my existing forms.

I'm thinking of something like this:

let form = new Form(Text="My form")
let lbl = new Label(Text="my label")
let chart = Chart.Area ["a", 10; "b", 20]

form.Controls.Add lbl
form.Controls.Add chart
// --->  The type 'ChartTypes.GenericChart' is not compatible with the type 'Control'   
Application.Run(form) 

Thanks!

vidi
  • 2,056
  • 16
  • 34

1 Answers1

15

In order to achieve this you should wrap your chart into FSharp.Charting.ChartTypes.ChartControl and take care of correct docking. Also you should not mix Chart from FSharp.Charting with Chart from System.Windows.Forms.DataVisualization.Charting.

A good staring point may be the following fully functional sample that works with the current FSharp.Charting v0.90.5; also references are required to System.Drawing and System.Windows.Forms:

open System
open FSharp.Charting
open FSharp.Charting.ChartTypes
open System.Drawing
open System.Windows.Forms

[<STAThread; EntryPoint>]
let main args =
    let myChart = [for x in 0.0 .. 0.1 .. 6.0 -> sin x + cos (2.0 * x)]
                    |> Chart.Line |> Chart.WithYAxis(Title="Test")
    let myChartControl = new ChartControl(myChart, Dock=DockStyle.Fill)
    let lbl = new Label(Text="my label")
    let form = new Form(Visible = true, TopMost = true, Width = 700, Height = 500)
    form.Controls.Add lbl
    form.Controls.Add(myChartControl)
    do Application.Run(form) |> ignore
    0
Gene Belitski
  • 10,270
  • 1
  • 34
  • 54
  • Thanks a lot! The ChartControl in the namespace FSharp.Charting.ChartTypes is not intuitive at all. And I couldn't find any example. – vidi Jan 15 '14 at 14:49
  • 1
    The reason for not paying too much attention to usage of `FSharp.Charting` inside `WinForms` apps perhaps is that first and foremost use case for the library is scripting; then `WinForms` is quite outdated technology, more advanced `WPF` has example(s) AFAIK out-of-the box. – Gene Belitski Jan 15 '14 at 14:58