Event.split < t, "U1," U2,'Del > Funkcja (F#)
Zwraca nowe zdarzenie, które wykrywa zdarzenie oryginalny i wyzwala pierwszego zdarzenia wynikowego, jeśli zwrócona stosowania funkcji argumenty zdarzeń Choice1Of2, a drugie zdarzenie, jeśli zwraca Choice2Of2.
Ścieżka obszaru nazw/modułu: Microsoft.FSharp.Control.Event
Zestaw: FSharp.Core (w 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>Funkcja, zazwyczaj rozpoznawania active deseń, który przekształca wartości zdarzenie w jednym z dwóch typów.
sourceEvent
Typ: IEvent<'Del,'T>Zdarzenie wejściowe.
Wartość zwracana
Krotka zdarzeń.Pierwszy uruchamiany w każdym przypadku, gdy splitter wynikiem Choice1of1, a drugi uruchamiany, gdy splitter wynikiem Choice2of2.
Uwagi
Ta funkcja o nazwie Split w skompilowane zestawy.Jeżeli języka, niż F# lub przez odbicie, uzyskują dostęp do funkcji, należy użyć tej nazwy.
Przykład
Poniższy kod pokazuje, jak używać Event.split funkcji, aby zaimplementować możliwość przenoszenia formantu w formularzu.splitter Funkcja jest aparat rozpoznawania deseń active (|Down|Up|), która przedstawia stan przycisków myszy.Jeśli użytkownik naciśnie przycisk myszy podczas przesuwania nad przycisk, przenosi przycisk.Jest również kod czasem zmienia kolor przycisku podczas przesuwania, w zależności od tego, który myszy jest używany przycisk.Ten test używa inny kolor dla każdego przycisku myszy.Inne ścieżki zdarzeń, który jest używany, gdy przycisk myszy nie jest wciśnięty, przywraca oryginalny kolor przycisku, po zwolnieniu przycisku.
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
Informacje o wersji
F# Core wersji biblioteki
Obsługiwane: 2.0, 4.0, przenośne