2009-04-14 1 views
2

Я очень новичок в F #, и я думал, что разработаю простой калькулятор winform, чтобы укрепить свои навыки с помощью F # и .NET. Я столкнулся с двумя проблемами, которые, вероятно, имеют очень простые ответы, однако я не мог найти никакой помощи из своих ресурсов.F # и winform Controls Вопрос

Во-первых, я хочу, чтобы изменить тип текстового поля на целое, так что, когда я нажимаю кнопку «Добавить», событие добавит целые числа, а не объединяет их. Например:

btnPlus.Click.Add (забавной _ -> tb1.Text < - ("2") + ("2")) дает мне 22, а не 4

Как указать целочисленный тип для текстового или целочисленного типа для значений, введенных в текстовое поле?

Мой следующий вопрос касается синтаксиса. Мне просто интересно, как добавить несколько команд в событие. То есть, в приведенном выше примере, скажем, я хотел добавить два целых числа, а также открыть другую форму и запустить почтовый ящик после нажатия кнопки. Я просто включаю запятую между каждой командой, например: btnPlus.Click.Add (fun _ -> добавить целые числа, открытую форму, сообщение) или есть что-то еще?

Приносим извинения за второстепенные вопросы. Там не хватает ресурсов на F # и WinForms, как есть на F # и выход (т.е. печать, ЦМД, и т.д ..)

Спасибо,

DFM

ответ

2

Я думаю, что текст текстового поля всегда string, но вы можете сделать, например,

(2 + 2).ToString() 

(не совсем уверен, что вы после).

Что касается нескольких утверждений внутри тела лямбда, F # основан на выражении, но использует ';' или новые строки для последовательности, например,

(fun _ -> doFoo(); doBar()) 

или

(fun _ -> 
    doFoo() 
    doBar() 
) 
+0

Благодарим вас за отзыв. Ваш ответ поставит меня в правильном направлении. Я хотел бы проверить, как синтаксис ищет добавление, вычитание, умножение и т. Д. Целых чисел после события click. В конце концов, я заменил числа (2) на входы текстовых полей, похожие на калькулятор. Спасибо - – 2009-04-14 02:49:12

1

Вам просто нужно разобрать содержимое TextBox как целое число. Вы можете сделать это через Convert.ToInt32.

open System 
let string1 = "254" 
let string2 = "4525" 
let myNum = Convert.ToInt32(string1) + Convert.ToInt32(string2) 

Редактировать: Вы также можете использовать Int32.TryParse (string, int32), чтобы сделать это.

Редактировать: В F # вы можете просто использовать «int», например. (int string1).

+0

Спасибо за второе продолжение. Ваш ответ был прекрасен! Я смог успешно добавить два входа в текстовый файл, используя метод int. Еще раз спасибо DFM – 2009-04-14 03:14:53