.net f#:编译程序中的windows窗体

.net f#:编译程序中的windows窗体,.net,f#,.net,F#,要从F#交互式控制台可视化数据,我可以执行以下操作: open System.Windows.Forms let testgrid (x) = let form = new Form(Visible = true) let data = new DataGridView(Dock = DockStyle.Fill) form.Controls.Add(data) data.DataS

要从F#交互式控制台可视化数据,我可以执行以下操作:

open System.Windows.Forms
let  testgrid (x) =    
          let form = new Form(Visible = true)    
          let data = new DataGridView(Dock = DockStyle.Fill)    
          form.Controls.Add(data)    
          data.DataSource <- x

testgrid [|(1,1);(2,2)|]

你需要一个信息泵;FSI已经有了一个,这就是为什么您的代码可以从FSI控制台工作,但是独立程序不会有一个,除非您制作一个:

open System
open System.Windows.Forms

let testgrid x =
    use form = new Form()
    new DataGridView(Dock = DockStyle.Fill, DataSource = x) |> form.Controls.Add
    Application.Run form

[<STAThread>]
do testgrid [|(1,1);(2,2)|]
开放系统
打开System.Windows.Forms
让testgrid x=
使用表单=新表单()
新建DataGridView(Dock=DockStyle.Fill,DataSource=x)|>form.Controls.Add
申请表格
[]
执行测试网格[|(1,1);(2,2)|]

@ildjam,谢谢。如何使此函数在调用时在主程序的单独线程中运行?@matlabdbuser:每个进程只允许有一个UI线程,因此这取决于主程序的功能。它也有UI吗?@ildjam,我的程序没有aUI。问题是,如果我在
DoTestGrid[|(1,1);(2,2)|]
之后有了代码,程序似乎会停留在表单上,并停止运行以下代码?
应用程序。在表单窗口关闭之前,run
不会返回。@matlabdbuser:如果您根本没有UI,您可以在单独的(STA)中运行
testgrid
thread@matlabdbuser-您可能对我正在处理的项目FsEye()感兴趣,它是一个基于WinForms的可视对象树检查器,用于FSI。@Stephen,谢谢您的链接。这个项目是一个很棒的工具。@Stephen:太棒了,值得更多的曝光。@ildjarn-谢谢你的反馈。我刚刚在Hubbs上发布了一条公告,你还有其他建议吗?@matlabdbuser-很高兴你喜欢它
open System
open System.Windows.Forms

let testgrid x =
    use form = new Form()
    new DataGridView(Dock = DockStyle.Fill, DataSource = x) |> form.Controls.Add
    Application.Run form

[<STAThread>]
do testgrid [|(1,1);(2,2)|]