Controalele din Visual Studio imbunatatesc procesul de dezvoltarea pentru aplicatiile destinate dispozitivelor Windows Mobile. Fata de .Net Framework, sunt in numar mult mai mic, dar eficiente pentru construirea rapida a unei interfete utilizator simple.
O lista a controalelor care nu sunt suportate in .Net Compact Framework:
CheckedListBox, ColorDialog (articol .Net Framework), ErrorProvider, FontDialog, GroupBox, HelpProvider, LinkLabel, NotificationBubble, NotifyIcon, RichTextBox, Splitter.
De asemnea nu sunt suportate controale ce au legatura cu activitatea de printing, drag and drop si ActiveX.
Cand construim o aplicatie, am vazut ca Visual Studio va deschide proiectul in Designer View. Acesta va contine o metoda InitializeComponent care va contine cod necesar construirii interfetei utilizatorului, cod generat pentru controale pe care le voi folosi.
Stim deja ca fereastra Toolbox contine toate controalele .Net Compact Framework ce pot fi adaugate intr-o aplicatie. Adaugarea unui control intr-o aplicatie la design-time se face pur si simplu prin a trage controlul dorit in forma aplicatie in fereastra Form Designer.
Fereastra Properties (F4) contine toate proprietatile publice si evenimente ale controlui selectat in Designer care pot fi modificate.
In continuare, vom creea o serie de articole dedicate celor mai folosite controale in .Net Compact Framework, incercand sa subliniem cele mai importante proprietati ale fiecaruia.
TextBox
Acest control este folosit pentru a interactiona cu utilizatorul. Suporta proprietatea BackColor, ForeColor, Font si multe altele. Evenimentul de Click nu este suportat, in schimb existand KeyPress (cand un caracter este introdus in textbox prin apasarea unei taste), KeyUp (atunci cand apasarea tastei ia sfarsit), KeyDown (fata de KeyPress, acest eveniment are loc si la apasarea unor taste gen CTRL, SHIFT, etc).
Exemplu:
Vrem sa adaugam pe o forma mai multe controale de tip TextBox. Am vrea ca acestea sa aiba toate o anumita culoare pentru fundal si o anumita culoare pentru text.
Pentru a evita setarea unor proprietati pentru fiecare textbox, vom creea un custom control numit ColoredTextBoxControl care va mosteni un TextBox. (articol-exemplu despre CustomControl). Stabilim proprietatile comune:
//seteaza un nou font this.Font = new Font(FontFamily.GenericSansSerif, 14, FontStyle.Bold); //seteaza culoarea fundalului this.BackColor = Color.FromArgb(238, 197, 145); //seteaza culoarea textului this.ForeColor = Color.White; //seteaza stilul pentru marginea controlului this.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
Facem drag and drop pentru doua controale ColoredTextBoxControl.
Putem face o verificare daca utilizatorul a introdus text, astfel:
//verificam daca a fost text introdus in casetele text if(coloredTextboxControl1.Text.Length==0|| coloredTextboxControl2.Text.Length==0) { MessageBox.Show("nu ati introdus text!"); } else { //preia textul din casetele text MessageBox.Show(coloredTextboxControl1.Text + " " + coloredTextboxControl2.Text); }
Apelam o metoda pentru evenimentul de apasarea a unei taste intr-un ColoredTextBoxControl, metoda care poate bloca/debloca un meniu, de exemplu.
//la evenimentul de KeyPress apeleaza metoda coloredTextBoxControl2_KeyDown coloredTextboxControl2.KeyPress += coloredTextboxControl2_KeyPress; //metoda care va trata evenimentul de KeyPress void coloredTextboxControl2_KeyPress(object sender, KeyPressEventArgs e) { menuItem1.Enabled = true; }
O proprietate interesanta este PasswordChar folosita in cazul casetelor text de tip parola.
coloredTextboxControl2.PasswordChar = '*';
Pentru folosirea databinding-ului in cazul unui textbox se poate citi articolul DataBinding in C# – un exemplu.
Label
Permite afisarea textului catre utilizator. Proprietatea Text a controlului determina ce text va fi vizibil utilizatorului. Proprietatea TextAlign este folosita pentru alinierea textului. Evenimentul TextChanged este apelat atunci cand textul se schimba.
//la evenimentul de TextChanged apeleaza metoda label1_TextChanged label1.TextChanged += label1_TextChanged; //metoda care va trata evenimentul de TextChanged void label1_TextChanged(object sender, EventArgs e) { MessageBox.Show("Textul a fost modificat!"); }
Exista optiunea de a navigare printre controale prin apasarea tastei TAB. Un control poate fi “sarit” de focus, daca ii va fi setata proprietatea TabStop pe false.
Proprietatea TabStop nu va permite ca la apasarea tastei TAB controlul Label1 sa fie selectat prin focus:
//focusul nu va fi primit label1.TabStop = false;
Proprietatea Visible pe care am folosit-o in multe exemple permite controlului in cazul in care este setat pe false sa fie ascuns utilizatorului.
label1.Visible = false;
Proprietatea Enabled a controlului Label1 (in general, aceasta proprietate este intalnita la mai toate controalele) permite/nu permite interactiunea cu utilizatorul (false/true).
label1.Enabled = false;
Un eveniment legat de aceasta proprietate este cel de EnableChanged care va avea loc atunci cand proprietatea Enabled se va schimba.
Checkbox
Prin intermediul controlul Checbox, in interfata grafica se specifica o valoare sau o expresie de tip Boolean.
Enumerarea CheckState contine 3 stari: Checked, Unchecked, Indeterminate, . Daca pentru primele situatia este clara, sa analizam cea de-a treia stare, Indeterminate.
Starea Indeterminate va fi valabila daca pentru controlul Checkbox este setata proprietatea ThreeState (aceasta situatie inseamna ca “check state”-ul nu poate fi determinat – control va avea o culoare gri care il arata ca fiind dezactivat, dar el poate fi bifat. Proprietatea Autocheck setate pe true, va face controlul sa fie “enabled”.
checkBox1.Text = "Email:"; //pentru activarea starii indeterminate checkBox1.ThreeState = true;
Putem folosi evenimentul de CheckStateChanged pentru a determina starea controlului:
//la evenimentul CheckStateChanged apeleaza metoda
checkBox1.CheckStateChanged+=checkBox1_CheckStateChanged;
//metoda apelata la evenimentul CheckStateChanged private void checkBox1_CheckStateChanged(object sender, EventArgs e) { //daca checkState este Checked if (checkBox1.CheckState == CheckState.Checked) { checkBox1.Text = "Are email!"; checkBox1.ForeColor = Color.Green; } else { //cazul in care checkState este Indeterminate if (checkBox1.CheckState == CheckState.Indeterminate) { checkBox1.Text = ""; checkBox1.ForeColor = Color.Blue; } else { //cazul in care checkState unchecked checkBox1.ForeColor = Color.Red; checkBox1.Text = "Nu are email"; } } }
Ca o paranteza, daca nu sunteti multumit de controalele din Visual Studio, se pot gasi controale “third-party” speciale pentru .Net Compact Framework, proiectate pentru a elimina limitarile hardware ale dispozitivelor (ecrane mici, performanta scazuta) si un design deosebit.
In urmatorul articol, vom prezenta alte cateva controale interesante si folosite des in .Net Compact Framework (Combobox,ListView,DateTimePicker).
Pingback/Trackback
Tweets that mention Controale in .Net CE – Partea 1 | by zeltera -- Topsy.com