Zmiana rozmiarów paneli w c#

Przeszukując czeluści internetu natrafiłem na bardzo ciekawą, rozszerzającą możliwości zwykłego Forms.Panel 'u o dynamiczne zmienianie jego rozmiaru. Klasę, która zapewnia tę funkcjonalność znalazłem na forum msdn, oto ona:

Klasę należy dodać do projektu, skompilować. Nowa kontrolka powinna pojawić się w Toolbox 'ie

nobugz:

using System;
using System.Drawing;
using  System.Windows.Forms;

public class SizeablePanel : Panel {
 private const int cGripSize = 20;
 private bool mDragging;
 private Point mDragPos;

 public SizeablePanel() {
 this.DoubleBuffered = true;
 this.SetStyle(ControlStyles.ResizeRedraw, true);
 this.BackColor =  Color.White;
 }

 protected override void  OnPaint(PaintEventArgs e) {
 ControlPaint.DrawSizeGrip(e.Graphics,  this.BackColor,
 new Rectangle(this.ClientSize.Width -  cGripSize, this.ClientSize.Height - cGripSize, cGripSize, cGripSize));
 base.OnPaint(e);
 }

 private bool IsOnGrip(Point pos) {
 return pos.X >= this.ClientSize.Width - cGripSize &&
 pos.Y >= this.ClientSize.Height - cGripSize;
 }

 protected override void OnMouseDown(MouseEventArgs e) {
 mDragging  = IsOnGrip(e.Location);
 mDragPos = e.Location;
 base.OnMouseDown(e);
 }

 protected override void  OnMouseUp(MouseEventArgs e) {
 mDragging = false;
 base.OnMouseUp(e);
 }

 protected override void  OnMouseMove(MouseEventArgs e) {
 if (mDragging) {
 this.Size = new Size(this.Width + e.X - mDragPos.X,
 this.Height + e.Y - mDragPos.Y);
 mDragPos = e.Location;
 }
 else if (IsOnGrip(e.Location)) this.Cursor = Cursors.SizeNWSE;
 else this.Cursor = Cursors.Default;
 base.OnMouseMove(e);
 }
}

Od siebie dodałbym tylko


this.BringToFront();

w OnMouseMove();.

Automatyczne przewijanie DataGridView – C Sharp

Praca z tablicą, której liczba wierszy sięga kilkudziesięciu tysięcy może być kłopotliwa. Dodając możliwość automatycznego przewinięcia tablicy do odpowiedniego wiersza może tę pracę ułatwić, szczególnie jeżeli jeżeli punktami do których będziemy przewijać nie będą przypadkowe. Poniższy kod umożliwia przewinięcie tabeli do wybranego wiersza.


dataGridView.ClearSelection();
dataGridView.Rows[nr_wiersza].Selected = true;
dataGridView.FirstDisplayedScrollingRowIndex = nr_wiersza;