În mod implicit, utilizatorii pot redimensiona rânduri, coloane și anteturi care nu utilizează redimensionarea automată în funcție de valorile din celule. Pentru ca utilizatorii să nu poată redimensiona în alte moduri, de exemplu în modul de umplere a coloanei, trebuie setată una dintre următoarele proprietăți DataGridView.
De asemenea, puteți împiedica utilizatorii să schimbe dimensiunea rândurilor sau coloanelor individuale prin setarea valorilor lor Redimensionabile. În mod implicit, valoarea proprietății Resizable se bazează pe valoarea proprietății AllowUserToResizeColumns pentru coloane și valoarea proprietății AllowUserToResizeRows pentru rânduri. Cu toate acestea, dacă proprietatea Resizable este setată explicit la True sau False. Valoarea specificată înlocuiește valoarea controlului pentru respectivul rând sau coloană. Pentru a restabili moștenirea, proprietatea Resizable trebuie să fie setată la NotSet.
Deoarece NotSet restabilește valoarea moștenirii, proprietatea Resizable nu va întoarce valoarea NotSet. Un rând sau o coloană nu este adăugat la controlul DataGridView. Dacă doriți să determinați dacă valoarea proprietății Resizable este moștenită pentru un rând sau o coloană, verificați proprietatea statului. Dacă valoarea de stat conține flagul ResizableSet. valoarea proprietății resizabile nu este moștenită.
Există două tipuri de redimensionare automată în controlul DataGridView. modul de umplere a coloanei și redimensionarea automată în funcție de conținut.
În modul de umplere a coloanei, coloanele vizibile din comandă umple lățimea zonei afișate a comenzii. Pentru mai multe informații despre acest mod, consultați Setarea modurilor de umplere pentru coloane pentru controlul DataGridView în Windows Forms.
Rândurile, coloanele și anteturile pot fi, de asemenea, setate pentru a redimensiona automat în funcție de conținut. În acest caz, dimensiunile se modifică de fiecare dată când conținutul celulei se schimbă.
În cazul în care valorile de celule sunt stocate în memoria cache datele de utilizator în mod virtual, redimensionarea automată are loc atunci când utilizatorul editează valoarea unei celule, și nu se produce în cazul în care valoarea este schimbat într-un handler cache CellValuePushed evenimente. În acest caz, apelați metoda UpdateCellValue pentru a forța o actualizare a afișajului și controlul celulei curente moduri de aplicare Redimensionarea automată.
Dacă redimensionarea automată în funcție de conținutul inclus doar pentru o singură dimensiune, adică rândurile, în loc de coloane, sau invers, și dimensiunea WrapMode incluse, de asemenea, variază în funcție de fiecare schimbare de altă dimensiune. De exemplu, în cazul în care Redimensionarea automată este setat pentru rânduri, coloane și nu modul WrapMode este activat, utilizatorii pot trage separatoare de coloană, modificarea lățimii coloanei și, de asemenea, înălțimi rând se va schimba în mod automat, astfel încât conținutul celulei este afișat în întregime.
În cazul în care redimensionarea automată, bazată pe setul de conținut pentru coloana, iar pentru rânduri și WrapMode activat, dimensiunea, controlul DataGridView se va schimba de fiecare dată când schimbați conținutul celulelor, iar noua dimensiune va fi calculată pe baza raportului ideal de înălțime și lățime a celulei.
Pentru a seta modul de redimensionare pentru anteturi și rânduri și pentru coloane care nu suprascrie valoarea controlului, setați una sau mai multe proprietăți DataGridView.
Pentru a suprascrie redimensionarea unei coloane de control pentru o coloană individuală, setați proprietatea AutoSizeMode la o altă valoare decât NotSet. Modul de redimensionare pentru o coloană este de fapt determinat de proprietatea InheritedAutoSizeMode. Valoarea acestei proprietăți se bazează pe valoarea proprietății AutoSizeMode a coloanei, dacă nu este egală cu NotSet. caz în care valoarea AutoSizeColumnsMode a controlului este moștenită.
Când lucrați cu cantități mari de date, trebuie să fiți precauți să redimensionați automat, în funcție de conținut. Pentru a evita degradarea performanțelor, utilizați modurile de redimensionare automată, care calculează dimensiunile numai pe baza rândurilor afișate, și nu prin evaluarea fiecărui rând din control. Pentru performanțe maxime, este preferabil să utilizați redimensionarea software-ului, astfel încât să puteți redimensiona la un moment dat, de exemplu, imediat după încărcarea datelor noi.
Modurile automat redimensionate în funcție de conținutul nu afectează rânduri, coloane sau anteturile care sunt ascunse prin setarea proprietăților rând vizibile sau coloană sau proprietăți RowHeadersVisible ColumnHeadersVisible sau egale cu un control fals. De exemplu, în cazul în care coloana a fost ascunsă după dimensiunea sa a fost modificat automat pentru a găzdui o valoare mare de celule, o coloană ascunsă nu se schimbă, dacă ștergeți un rând cu o valoare mare a celulei. Redimensionarea automată nu apare atunci când modificați, astfel încât vizibilitatea schimba proprietatea vizibilă a coloanei la adevărata valoare anterioară nu va avea ca rezultat o reafirmare a dimensiunii sale pe baza conținutului curent.
Redimensionarea software-ului, în funcție de conținut, afectează toate rândurile, coloanele și anteturile, indiferent de vizibilitatea acestora.
Aceste metode redimensionează rândurile, coloanele sau anteturile o dată și nu sunt configurate pentru a redimensiona definitiv. Dimensiunile noi sunt calculate automat pentru a afișa orice conținut al celulei fără trunchiere. Cu toate acestea, dacă redimensionați coloanele programabil, valorile proprietății InheritedAutoSizeMode sunt Fill. valorile lățimii rezultate în funcție de conținut sunt utilizate pentru a modifica proporțional valorile proprietății FillWeight. iar lățimile efective ale coloanelor sunt apoi calculate din aceste noi relații, astfel încât toate coloanele să umple zona de afișare a controlului disponibilă.
Redimensionarea software-ului vă permite să evitați degradarea performanțelor cu redimensionarea constantă. De asemenea, vă permite să specificați dimensiunile inițiale pentru rânduri, coloane și anteturi ale căror dimensiuni poate fi modificat de utilizator și este potrivit pentru modul de umplere a coloanei.
Metodele de redimensionare a software-ului sunt de obicei numite în anumite momente în timp. De exemplu, aveți posibilitatea să redimensionați programatic toate coloanele imediat după încărcarea datelor sau să modificați mărimea șirului specificat după modificarea unei anumite valori a celulei.
Comportamentul de redimensionare poate fi configurat atunci când lucrați cu tipuri derivate DataGridView. celula, rând sau coloană, suprascriind metodele DataGridViewCell. GetPreferredSize. DataGridViewRow. GetPreferredHeight sau DataGridViewColumn. GetPreferredWidth sau apelând suprasarcină protejată a metodelor de redimensionare din controlul derivat DataGridView. Supraîncărcarea protejată a metodelor de redimensionare este concepută pentru a lucra în perechi pentru a atinge un raport ideal de înălțime și lățime, excluzând celule prea mari sau mari. De exemplu, dacă suneți suprasarcină AutoResizeRows (DataGridViewAutoSizeRowsMode, Boolean) a metodei AutoResizeRows și înlocuiți false cu parametrul Boolean. Suprasarcina va calcula înălțimea și lățimea ideală pentru celule într-un rând, dar va schimba numai înălțimea rândurilor. Apoi trebuie să apelați metoda AutoResizeColumns. Pentru a regla lățimea coloanelor la valoarea ideală calculată.
Enumerările utilizate prin redimensionarea proprietăților și a metodelor au aceleași valori pentru redimensionare în funcție de conținut. Utilizând aceste valori, puteți restricționa celulele utilizate pentru a calcula dimensiunea preferată. Pentru toate enumerările, redimensionarea valorilor cu nume legate de celulele afișate limitează calculul celulelor în rândurile afișate. Excluderea rândurilor va ajuta la evitarea degradării performanței atunci când lucrați cu un număr mare de rânduri. Calculele pot fi, de asemenea, limitate la valorile celulelor din celulele antetului sau din alte celule.