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();.

Obsługa right click w C#

Do osiągnięcia efektu obsługi „prawego kliku” należy odpowiednio spreparować akcje ( event ) MouseDown. Metoda, która powinna zostać wywołana dla tej akcji powinna wyglądać w następujący sposób:


private void panel_RightMouseDown(object sender, MouseEventArgs e)
{
 if (e.Button.ToString() == "Right")
 {
  // TODO
 }
}

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;

Problem z uruchomieniem aplikacji skompilowanej za pomocą Visial Studio 2008

Jakiś czas temu pracowaliśmy nad aplikacją wykorzystującą bibliotekę OpenCV do sterowania grą Pong za pomocą kamery. Cała aplikacja tworzona była w środowisku Visual Studio 2008. Po skompilowaniu działającego programu do wersji Release nie chciał on działać na innych komputerach ( z tym samym systemem operacyjnym ). Natychmiast po uruchomieniu wyświetlany był komunikat błędu:

"The application failed to initialize properly  (0xc0150002). Click on OK to terminate the  application"

Rozwiązanie błędu było tak proste, że aż wstyd o nim pisać 🙂 Okazało się bowiem, że w czasie kompilowania linkowaliśmy biblioteki OpenCV w wersji Debug. Wystarczyło tylko zmienić linkowane biblioteki na odpowiednia wersję alby problem znikł.

Obsługa błędu 404 za pomocą JSP

W celu obsłużenia błędu 404 ( page not found error ) za pomocą JSP należy w pliku web.xml dopisać następujące linijki:

 <error-page>
       <error-code>404</error-code>
       <location>/error.jsp</location>
 </error-page> 

W przytoczonym przykładzie w przypadku wystąpienia błędu 404 zostanie wywołany plik „error.jsp”.