Как вы выражаете (Keys.Control | Keys.M) в F #? - PullRequest
3 голосов
/ 15 августа 2010

В C # вы можете выразить символы для события KeyPress в виде Keys.Control | Keys.M.В F # Keys.Control ||| Keys.M не работает.Что значит?

Редактировать : Действительно интересно.Использование System.Windows.Forms.Keys.Control ||| System.Windows.Forms.Keys.M согласно предложению Йоханнеса Ресселя, приведенному ниже, в интерактивном окне F # работает точно так, как он показывает.Запись в файл .fs:

    form.KeyPress.Add (fun e ->
         if (e.KeyChar = (System.Windows.Forms.Keys.Control ||| System.Windows.Forms.Keys.M)) then textbox.SelectAll() )

дает мне ошибку The type 'char' does not support any operators named '|||'.Так что я, вероятно, ошибочно определил местонахождение проблемы.От Keys к символу нет типографского набора.

Ответы [ 2 ]

4 голосов
/ 15 августа 2010

Просто небольшое дополнение к ответу Йоханессы Рессел, есть более хороший (или «более функциональный») способ сделать это с помощью реактивного программирования.

form.KeyDown
    |> Event.filter (fun e -> e.KeyData = (Keys.Control + Keys.M))
    |> Event.map (fun _ -> textbox.SelectAll())
    |> ignore
2 голосов
/ 15 августа 2010

Использование +:

Keys.Control + Keys.M

FWIW, ||| у меня работает, хотя:

> System.Windows.Forms.Keys.Control ||| System.Windows.Forms.Keys.M;;
val it : System.Windows.Forms.Keys = M, Control
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...