4

我是否以正确的方式使用了 ConfigureEvent ?当我调整窗口大小或更改窗口位置时,没有任何反应,标签的文本不会像我预期的那样更改为“已更改”?

module Main =
    open System
    open Gtk
    [<EntryPoint>]
    let Main(args) = 
        Application.Init()
        let win = new MainWindow.MyWindow()
//      -----------------------------------------
        let l = new Label( "None" )
        win.Add l
        win.ConfigureEvent.Add( fun _ ->
            l.Text <- "Changed" )
//      -----------------------------------------
        win.ShowAll()
        Application.Run()
        0
4

1 回答 1

0

根据此常见问题解答,您需要向处理程序添加一个属性才能使其正常工作。此 C# 代码有效:

[GLib.ConnectBefore]
protected void OnConfigureEvent (object sender, ConfigureEventArgs a)
{
    label1.Text = "Changed";
}

为了在您的 F# 代码中工作,您可能需要让处理程序成为实例方法而不是 lambda,因此您可以将属性附加到。我猜你应该真的使用其他事件,虽然我不确定是哪个。

于 2013-05-29T09:53:02.957 回答