2008-12-06 4 views
0

J'ai récemment commencé à apprendre F #, et c'est la première fois que j'utilise WinForms. Voici mon code.F # winforms Problème de MenuStrip: Je ne sais pas comment obtenir un handle sur DropDownItems

#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) 

Ce que le problème est, je ne peux pas à comprendre comment je recevrais une poignée sur l'élément DropDownItems pour que je puisse l'utiliser. Je suis sûr que c'est quelque chose de simple, mais je n'utilise pas F # depuis si longtemps. Merci pour toute aide.

edit: Je voudrais aussi souligner que je sais qu'il y a beaucoup de syntaxe moche dans ce bloc de code, mais le tout est juste un formulaire de test que j'ai utilisé.

Répondre

3

Je pense que vous avez juste besoin de

let ddi = file.DropDownItems.Add("TestItem") //Code of importance 

Le problème est que vous ignorez le résultat de l'appel Add(), qui renvoie l'élément ajouté.

Notez également qu'il est plus idiomatiques dire

yadda |> ignore 

plutôt que

ignore(yadda) 
+0

Merci pour la réponse, désolé de ne pas besting plus tôt. J'étais si fatigué ce jour-là que je ne pensais même pas. Désolé pour une question aussi stupide. – Rayne

Questions connexes