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.

È stato utile?

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
scroll top