F # winforms Problema MenuStrip: non sono sicuro di come gestire DropDownItems
Domanda
Di recente ho iniziato a studiare F # e questa è la prima volta che uso WinForms. Ecco il mio codice.
#light
open System
open System.Windows.Forms
let form =
let temp = new Form()
let ms = new MenuStrip()
let file = new ToolStripDropDownButton("File")
ignore(ms.Items.Add(file))
ignore(file.DropDownItems.Add("TestItem")) \\Code of importance
let things _ _ = ignore(MessageBox.Show("Hai"))
let handle = new EventHandler(things)
ignore(file.Click.AddHandler(handle))
let stuff _ _ = ignore(MessageBox.Show("Hai thar."))
let handler = new EventHandler(stuff)
let myButton = new Button(Text = "My button :>", Left = 8, Top = 100, Width = 80)
myButton.Click.AddHandler(handler)
let dc c = (c :> Control)
temp.Controls.AddRange([| dc myButton; dc ms |]);
temp
do Application.Run(form)
Qual è il problema, non riesco a capire come ottenere un handle sull'elemento DropDownItems in modo da poterlo utilizzare. Sono sicuro che sia qualcosa di semplice, ma non uso F # da così tanto tempo. Grazie per l'aiuto.
modifica: vorrei anche sottolineare che so che ci sono molte brutte sintassi in quel blocco di codice, ma il tutto è solo un modulo di test che ho usato.
Soluzione
Penso che tu debba solo
let ddi = file.DropDownItems.Add("TestItem") //Code of importance
Il problema è che stai ignorando il risultato della chiamata Aggiungi (), che restituisce l'elemento aggiunto.
Nota anche che è più idiomatico dirlo
yadda |> ignore
anziché
ignore(yadda)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow