Event.split<'T,'U1,'U2,'Del> – funkce (F#)
Vrátí nové události, která naslouchá události původní a spustí první výsledné události, vrátí funkce aplikace na argumenty událostí Choice1Of2a druhý událost ji vrátí Choice2Of2.
Cesta k oboru názvů nebo modul: Microsoft.FSharp.Control.Event
Sestavení: FSharp.Core (v FSharp.Core.dll)
// Signature:
Event.split : ('T -> Choice<'U1,'U2>) -> IEvent<'Del,'T> -> IEvent<'U1> * IEvent<'U2> (requires delegate)
// Usage:
Event.split splitter sourceEvent
Parametry
splitter
Type: 'T ->Choice<'U1,'U2>Funkce, obvykle rozpoznávání aktivní vzorek, který převede hodnoty události do dvou typů.
sourceEvent
Typ: IEvent<'Del,'T>Vstupní události.
Vrácená hodnota
Záznam událostí.Kdykoli je první splitter vyhodnotí Choice1of1 a druhý je vždy splitter vyhodnotí Choice2of2.
Poznámky
Tato funkce se nazývá Split v kompilovaný sestavení.Pokud přistupujete k funkci jazyka než F# nebo prostřednictvím reflexe, tento název použijte.
Příklad
Následující kód ukazuje způsob použití Event.split funkci implementovat možnost přesouvání ovládacího prvku ve formuláři.splitter Je funkce rozpoznávání aktivních vzorek (|Down|Up|), která představuje stav tlačítka myši.Pokud uživatel stiskne tlačítko myši při pohybu myši, když je nad tlačítko, tlačítko se přesune.Je také kód, který se někdy změní barvu tlačítka, zatímco je přesunutí, podle které myši tlačítko použít.Tento test použije barvu pro každé tlačítko myši.Ostatní události cestu, která se používá, pokud není tlačítko myši dolů, obnoví původní barvu tlačítka po uvolnění tlačítka.
open System.Windows.Forms
open System.Drawing
open Microsoft.FSharp.Core
let form = new Form(Text = "F# Windows Form",
Visible = true,
TopMost = true)
let button = new Button(Text = "Button",
Visible = true,
Left = 100,
Width = 50,
Top = 100,
Height = 20)
form.Controls.Add(button)
let originalColor = button.BackColor
let mutable xOff, yOff = (0, 0)
let (|Down|Up|) (evArgs:MouseEventArgs) =
match evArgs.Button with
| MouseButtons.Left
| MouseButtons.Right
| MouseButtons.Middle -> Down(evArgs)
| _ -> Up
button.MouseDown
|> Event.add(fun evArgs ->
xOff <- evArgs.X
yOff <- evArgs.Y)
form.MouseMove
|> Event.map (fun evArgs -> (evArgs.X, evArgs.Y))
|> Event.add (fun (x, y) -> form.Text <- sprintf "(%d, %d)" x y)
let (dragButton, noDragButton) = Event.split (|Down|Up|) button.MouseMove
// Move the button, and change its color if the user uses the
// right or middle mouse button.
dragButton |> Event.add ( fun evArgs ->
match evArgs.Button with
| MouseButtons.Left ->
button.BackColor <- originalColor
| MouseButtons.Right ->
button.BackColor <- Color.Red
| MouseButtons.Middle ->
button.BackColor <- Color.Blue
| _ -> ()
button.Left <- button.Left + evArgs.X - xOff
button.Top <- button.Top + evArgs.Y - yOff
button.Refresh())
// Restore the button's original color when the mouse is moved after
// the release of the button.
noDragButton |> Event.add ( fun () ->
button.BackColor <- originalColor)
Platformy
Windows 8, Windows 7, Windows Server 2012 Windows Server 2008 R2
Informace o verzi
F# základní verze knihovny
Podporovány: 2.0, 4.0, přenosné