lxn / walk

A Windows GUI toolkit for the Go Programming Language
Other
6.78k stars 886 forks source link

[ComboBox]OnCurrentIndexChanged:连续触发三次 #821

Open speauty opened 1 year ago

speauty commented 1 year ago

最近遇到个小问题,在使用ComboBox组件,由于需要获取当前选中项,然后就注册了OnCurrentIndexChanged函数。不过实际情况和预期有点小差别,那个函数被连续触发了三次,是因为某些属性未正确设置的原因么?相关源码如下:

package main

import (
    "fmt"
    "github.com/lxn/walk"
    . "github.com/lxn/walk/declarative"
    "time"
)

func main() {
    var win *walk.MainWindow
    MainWindow{
        AssignTo: &win,
        Title:    "ComboBox",
        MinSize:  Size{600, 400},
        Layout:   VBox{},
        Children: []Widget{
            ComboBox{
                Model: []string{"Combo", "Box", "CB"},
                OnCurrentIndexChanged: func() {
                    fmt.Println(time.Now().String())
                    // 2023-03-26 15:10:09.3184992 +0800 CST m=+2.503204401
                    // 2023-03-26 15:10:09.3393394 +0800 CST m=+2.524044601
                    // 2023-03-26 15:10:09.340897 +0800 CST m=+2.525602201
                },
            },
        },
    }.Run()
}

其中walk库的相关信息 github.com/lxn/walk v0.0.0-20210112085537-c389da54e794