.net 将颜色对话框结果解析为笔刷

.net 将颜色对话框结果解析为笔刷,.net,winforms,f#,.net,Winforms,F#,如何解析颜色对话框的结果,以便将笔刷的颜色设置为其值 这就是我所拥有的,也是我想要做的 let b = Brushes.Black btnColor.Click.Add(fun _ -> ColorDialog.ShowDialog() (* Here I want to set the selected color to my brush b *) |> ignore ) 我猜你这里说的是System.Windows.Forms 有关可变的更多信息,请参阅。我猜您在这里谈论

如何解析颜色对话框的结果,以便将笔刷的颜色设置为其值

这就是我所拥有的,也是我想要做的

 let b = Brushes.Black
 btnColor.Click.Add(fun _ ->
 ColorDialog.ShowDialog() (* Here I want to set the selected color to my brush b *) |> ignore )

我猜你这里说的是System.Windows.Forms


有关可变的更多信息,请参阅。

我猜您在这里谈论的是System.Windows.Forms


有关可变的更多信息,请参阅。

这是Wpf还是Winforms。还有,您使用的是哪种颜色的对话框?对不起,我应该提到它是windows窗体,这是Wpf或Winforms。还有,您使用的是哪种颜色的对话框?对不起,应该提到它的windows formsSeems正在工作,但当我这样做时,我没有注意到笔刷b有任何变化,知道为什么吗?:/btnColor2.Click.Addfun->b=new SolidBrushgetColorFromUserb.Color |>ignoreFSharp在默认情况下大部分是不可变的,因此不能更改b的值。如果您确实想更新b,那么应该将其标记为可变的。我将添加到代码示例中。我一直忘记。。。再次感谢!问题已解决。似乎正在工作,但当我这样做时,我没有注意到笔刷b有任何变化,知道原因吗?:/btnColor2.Click.Addfun->b=new SolidBrushgetColorFromUserb.Color |>ignoreFSharp在默认情况下大部分是不可变的,因此不能更改b的值。如果您确实想更新b,那么应该将其标记为可变的。我将添加到代码示例中。我一直忘记。。。再次感谢!问题解决了。
open System.Drawing
open System.Windows.Forms

let getColorFromUser initialColor =
    use dlg = new ColorDialog(Color = initialColor)
    if dlg.ShowDialog() = DialogResult.OK then
        dlg.Color
    else
        initialColor

// example with mutation
let mutable b = new SolidBrush(Color.Black)

b <- new SolidBrush(getColorFromUser(Color.Black))