За да се програмира под .NET платформата е достатъчно да се инсталира някоя версия на фреймърка.
След инсталацията на .NET фреймуърк автоматично се инсталират няколко компилатора:
csc.exe – компилатор за C Sharp (C#)
jsc.exe – компилатор за JScript .Net
vbc.exe – компилатор за Visual Basic .Net
В момента имам инсталиран .Net framework 2.0 и работя с него, но предполагам, че и при по-новите версии ситуацията ще е подобна. Компилаторите се намират в директорията: C:\WINDOWS\ServicePackFiles\i386>
Аз харесвам JScript като структуриране на програмите и ще използвам него за конкретния пример. Както и в други GUI-примери, ще използвам и сега примерна програма за конвертиране на температура от Целзий до Фаренхайт.
Преди да поставя реалния код, ще покажа базов, рамкиращ код за това как се програмира подобна програма с графичен интерфейс:
import System; import System.Drawing; import System.Collections; import System.Windows.Forms; import System.ComponentModel; import Accessibility; public class Exercise extends System.Windows.Forms.Form { // var ...; function Exercise(){ InitializeComponent(); this.button1.add_Click(this.button1_Click); } function button1_Click(sender : Object, e : System.EventArgs){ //... } function InitializeComponent(){ // iniciirat se wsi4ki komponenti ot GUI-to this.textBox1 = new System.Windows.Forms.TextBox(); // ... } } var frmPledge : Exercise = new Exercise(); frmPledge.ShowDialog(); |
На база на този пример попълваме целия необходим код. Помогнах си за интерфейса с SharpDevelop 3.2 – чудесна програма за .NET програмиране. За съжаления програмата нативно не поддържа JScript, за това от нея копирам само кода за формата, като леко го промених. Програмата изглежда така:
Кода е сравнително лесен за писане и разбиране. Самото exe е едва 8kb. С включения сорс код може да се изтегли от тук: fahrenheit to celsius
import System; import System.Drawing; import System.Collections; import System.Windows.Forms; import System.ComponentModel; import Accessibility; public class Exercise extends System.Windows.Forms.Form { var button1 : System.Windows.Forms.Button; var textBox1 : System.Windows.Forms.TextBox; var textBox2 : System.Windows.Forms.TextBox; function Exercise(){ InitializeComponent(); this.button1.add_Click(this.button1_Click); } function button1_Click(sender : Object, e : System.EventArgs){ var Faren : double; var Celsius : double; Faren = ConvertToDouble(this.textBox1.Text); if(!isNaN(Faren)){ Celsius = (Faren - 32)*5/9; this.textBox2.Text = Celsius.ToString(); } else { this.textBox2.Text = "Wrong format"; } } function ConvertToDouble(valueto){ var ddd = valueto.ToString(System.Globalization.CultureInfo.InvariantCulture) return ddd; } function InitializeComponent(){ // iniciirat se wsi4ki komponenti ot GUI-to this.textBox1 = new System.Windows.Forms.TextBox(); this.button1 = new System.Windows.Forms.Button(); this.textBox2 = new System.Windows.Forms.TextBox(); this.SuspendLayout(); // // textBox1 // this.textBox1.Location = new System.Drawing.Point(12, 12); this.textBox1.Name = "textBox1"; this.textBox1.Size = new System.Drawing.Size(100, 20); this.textBox1.TabIndex = 0; // // button1 // this.button1.Location = new System.Drawing.Point(118, 10); this.button1.Name = "button1"; this.button1.Size = new System.Drawing.Size(75, 23); this.button1.TabIndex = 1; this.button1.Text = "Convert"; this.button1.UseVisualStyleBackColor = true; // // textBox2 // this.textBox2.Location = new System.Drawing.Point(199, 12); this.textBox2.Name = "textBox2"; this.textBox2.Size = new System.Drawing.Size(100, 20); this.textBox2.TabIndex = 2; // // MainForm // this.AutoScaleBaseSize = new System.Drawing.Size(5, 13); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(311, 46); this.Controls.Add(this.textBox2); this.Controls.Add(this.button1); this.Controls.Add(this.textBox1); this.Name = "Exercise"; this.Text = "faren_to_celsius"; this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; this.MaximizeBox = false; this.MinimizeBox = false; } } var frmPledge : Exercise = new Exercise(); frmPledge.ShowDialog(); |
За да се компилира този код до изпълнимо exe правим следното:
- запазваме сорс-кода в файла, примерно far_to_cel.js
- отваряме команден прозорец cmd (Start -> Run -> cmd). Или натискаме шифт и кликаме в директорията със сорс-кода, след това избираме “Open command window here”.
- след като сме позиционирали cmd в директорията със сорс-файла ще трябва да извикаме компилатора jsc.exe:
C:\Windows\Microsoft.NET\Framework\v4.0.30319\jsc.exe /t:winexe far_to_cel.js
Ако не се покаже грешка, значи сме компилирали всичко нормално.
===================
Прилагам същата програмка, но написана на C#:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 | using System; using System.Windows.Forms; using System.Drawing; using System.Text.RegularExpressions; using System.Globalization; public class CelToFar : Form { Button button1; TextBox textBox1; TextBox textBox2; public CelToFar() { button1 = new Button(); button1.Text = "Calculate"; button1.AutoSize = false; button1.Location = new Point(80, 15); button1.Size = new Size(75, 23); textBox1 = new TextBox(); textBox1.Location = new Point(12, 12); textBox1.Name = "textBox1"; textBox1.Font = new Font("Microsoft Sans Serif", 14F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); textBox1.Size = new Size(60, 40); textBox1.Text = ""; textBox2 = new TextBox(); textBox2.Location = new Point(165, 12); textBox2.Name = "textBox2"; textBox2.Font = new Font("Microsoft Sans Serif", 14F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); textBox2.Size = new Size(60, 40); textBox2.Text = ""; button1.Click += new EventHandler(ButtonClicked); this.Controls.Add(button1); this.Controls.Add(textBox1); this.Controls.Add(textBox2); this.Height = 120; this.Width = 255; this.StartPosition = FormStartPosition.CenterScreen; this.Visible = true; } public void ButtonClicked(object source, EventArgs e) { string FarenTxt = this.textBox1.Text; double Faren; double Celsius; Regex rgx = new Regex(@"^[\d\.]*$"); if(rgx.IsMatch(FarenTxt) && !String.IsNullOrEmpty(FarenTxt)){ Faren = Convert.ToDouble(FarenTxt, CultureInfo.InvariantCulture); Celsius = (Faren - 32)*5/9; this.textBox2.Text = System.Math.Round((decimal)Celsius, 3).ToString(CultureInfo.InvariantCulture); } else { this.textBox2.Text = "Wrong format"; } } static void Main() { Application.Run(new CelToFar()); } } |
Запазваме файла с името Far_to_celsius.cs, след което компилиарнето на кода става по подобен начин:
1 | C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe /t:winexe Far_to_celsius.cs |