Risipa de key_press | Programare

Programare .Net | Tehnici de programare | Tutoriale | Lectii si exemple

Risipa de key_press | Programare - Programare .Net | Tehnici de programare | Tutoriale | Lectii si exemple

Custom Controls in .Net Compact Framework

     In acest articol, vom descrie controalele disponibile in dezvoltarea aplicatiilor cu .Net Compact Framework, modul in care putem crea controale particularizate si comportamente ale acestor controale in aplicatii.

     .Net Compact Framework pune la dispozitia dezvoltatorului un set bogat de controale pentru realizarea interfetei utilizatorului: etichete, casete pentru text, meniuri, controale pentru timp si data,imagini etc.

     Mai intai, as vrea sa evidentiem codul care se genereaza automat, in momentul folosirii controalelor. Facem drag and drop la un textbox.

In Solution Explorer, dublu click pe fisierul cu Form1.Designer.cs. Observam, ca acesta contine proprietati pentru controlul pe care l-am adaugat anterior:

 
           // textBox1
           this.textBox1.Location = new System.Drawing.Point(14, 31);
           this.textBox1.Name = "textBox1";
           this.textBox1.Size = new System.Drawing.Size(111, 22);
           this.textBox1.TabIndex = 0;

     Acelasi lucru se poate observa si pentru celelalte controale (designer.cs – este o clasa partiala, generata automat, care separa codul UI de codul logic).

     In cadrul dezvoltorii unei aplicatii non-touchscreen, bara de instrumente a Visual Studio pune la dispozitie o multitudine de controale. Comparativ cu o aplicatie cu touchscreen, bara de instrumente contine mai putine controale in aplicatia Standard.

     Regasim unele controale foarte utilizate si in .Net Framework: Combobox, Checkbox, DateTimePicker, Label, TextBox.

    O categorie foarte importanta de controale e reprezinta de controale pentru manipularea datelor:

DataGrid pentru afisarea datelor, BindingSource (legatura dintre un control de date si sursa de date), DataSet si Pointer reprezinta controale foarte eficiente in lucrul cu datele. 

     Controale prezinta capacitatea de andocare (docking) pe baza formei parinte si de ancorare (anchoring) – pastrarea distantei fixe de la marginea controlului/formei parinte. De asemenea, derulare (scrolling) si scalare (scaling) automate.

     De remarcat este lipsa controlului de tip Button, care isi pierde utilitatea in cadrul unei aplicatii mobile construita pe Standard SDK. Totusi, il vom regasi in cazul dezvoltarii unei aplicatii cu touchscreen.

     Dintre controale care nu sunt suportate in .Net Compact Framework, se numara cele din grupul de Print, Notification, FontDialog, ColorDialog, Error Provider, RichTextBox.

Crearea unui control particularizat (custom)

     Vom crea un control, un textbox, care va accepta de la utilizator doar cifre.

     Construim o solutie pentru dispozitive mobile, Standard, bazata pe versiuea 3.5 a .Net Compact Framework.

     In Solution Explorer, click dreapta pe proiect Add-New Item(Visual C# Items – Code – Class) si denumim fisierul NumericTextBox.

     Mostenim clasa TextBox, pentru a prelua din proprietatile si evenimentele acesteia:

class NumericTextBox : TextBox

Declaram folosirea spatiului de nume in care este continuta clasa TextBox:

using System.Windows.Forms;

Suprascriem evenimentul de OnKeyPress.

 //suprascriem metoda
        protected override void OnKeyPress(KeyPressEventArgs e)
        {
            base.OnKeyPress(e);
           
            
            //verificam daca este cifra
            if (Char.IsDigit(e.KeyChar))
            {
               //ok
            }
            //pentru cazul cand este apasata tasta backspace
            else if (e.KeyChar == '\b')
            {
                //backspace este caracter permis
            }
            else
            {
                MessageBox.Show("Introduceti doar cifre");
                e.Handled = true;
            }
        }

     In metoda Loada formei, scriem urmatorul cod, pentru a putea folosi controlul creat:

 private void Form1_Load(object sender, EventArgs e)
        {
            NumericTextBox numericTextBox = new NumericTextBox();
            //seteaza container-ul parinte, in cazul nostru, Form1, pentru control
            numericTextBox.Parent = this;
            //localizarea controlului, latime, inaltime 
            numericTextBox.Bounds = new Rectangle(5, 5, 150, 100);

        } 

Observatie: Pentru a putea face acest control disponibil si in modul design, facem drag and drop la fisierul NumericTextBox.cs din Solution Explorer, in Toolbox. Apoi, il putem folosi ca pe orice control.

     Solutia este disponibila pentru descarcare, aici.

     Putem extinde acest exemplu, prin adaugarea unor alte proprietati, care sa preia textul introdus si sa il analizeze, sau pentru crearea unor alte validari (numere de telefon, numere cu virgula, numere negative, etc)

     Marimea ecranelor dispozitivelor determina ca timpul alocat construirii unei interfete utilizator sa fie o provocare. Display-ul trebuie exploatat eficient, chiar daca in evolutia acestuia au fost introduse suportul pentru orientarea multipla si high-resolution.

     Urmatorul articol va fi alocat textului si fonturilor in .Net Compact Framework.

Category: Uncategorized

    Pingback/Trackback

    Tweets that mention Custom Controls in .Net Compact Framework | by zeltera -- Topsy.com

Your email address will not be published. Required fields are marked *

*