2017-01-17 3 views
1

Я хочу выяснить, как событие mouseWheel работает в библиотеке winforms.Как работает событие WinForms MouseWheel в F #?

Хотя никогда нет никаких хороших примеров, чтобы узнать, когда речь идет о F#

Я надеюсь, что один из вас, ребята, можете сказать мне.

я думал что-то вроде этого:

onMouseWheelEvent = 
     if MouseWheel event = scroll forward then 
     printfn "zooming in" 
     else 
     printfn "zooming out" 

Я знаю, что это какой-то глупый код я отправляю, но я буквально не могу найти что-нибудь на WinForms mousewheelevent кроме этого существует. Как это работает, остается загадкой.

Заранее благодарим.

+2

Используйте те же примеры, которые Вы нашли на других языках. Синтаксис может несколько отличаться, но это все тот же .NET Framework. Те же обработчики событий работают на всех языках. –

+2

«* i буквально не нахожу ничего на winforms mousewhelelevent, отличном от того, что существует. Как это работает, остается загадкой. *« Как обычно, [документация] (https://msdn.microsoft.com/en-us/library/ system.windows.forms.control.mousewheel.aspx # Замечания) - хорошее место для начала ... – ildjarn

+1

Я бы бросил вызов предположению, что winforms является особенно хорошей площадкой для изучения F # (или любого другого нового языка, если на то пошло) , Для изучения F # я бы сосредоточил внимание на основных понятиях, таких как функции, структуры данных, неизменность, функции библиотеки F #. Существует достаточно места для улучшения качества кода в коде, который вы недавно опубликовали в других вопросах. –

ответ

6

Попробуйте запустить это в F # интерактивного (любезно подобного примера на fssnip from Tomas Petricek):

open System.Windows.Forms 

// Create form, label and add label to form 
let form = new Form(Text = "Scroller Test") 
let label = new Label() 
form.Controls.Add(label) 

// register mousewheel event handler and capture scrolling 
form.MouseWheel.Add(fun e -> 
    match e.Delta with 
    | n when n > 0 -> label.Text <- "Scrolled up" 
    | n when n < 0 -> label.Text <- "Scrolled down" 
    | _ ->()) // making compiler happy even though e.Delta cannot be 0 

// Show the form (in F# Interactive) 
form.Show() 
4

Если вы используете F # интерактивными, самое простое, что вы можете написать, чтобы проверить, как ведет себя MouseWheel событие что-то вроде этого:

open System.Windows.Forms 

let frm = new Form(Visible=true) 
frm.MouseWheel.Add(fun e -> 
    printfn "%A" e.Delta 
) 

При выборе кода и отправить его на F # Interactive (Alt + Введите в большинстве редакторов F #), вы должны увидеть форму. Когда вы прокрутите страницу, вы увидите, что номер Delta является отрицательным или постовым числом, указывающим, сколько вверх или вниз вы прокрутили.

Если вы хотите запустить это как отдельное приложение, вам нужно будет отображать номера в другом месте (с использованием ярлыка, я думаю), и вам нужно будет добавить Application.Run(frm) до конца, чтобы запустить приложение.

Я согласен с Антоном в том, что WinForms, возможно, не то, что большинство людей используют для разработки приложений пользовательского интерфейса в наши дни, но я думаю, что это не проблема. Вы можете использовать WinForms для создания прекрасных приложений и изучения F #. В F# book I wrote some time ago есть куча примеров WinForms.

Смежные вопросы