Единственная «забавная» часть заключается в том, что если вы вычислите (153*m-457)/5
для значений от 3 до 15, вы получите
0, 31, 61, 92, 122, 153, 184, 214, 245, 275, 306, 337
, где вычитая каждый элемент из предыдущего, начиная со второго, мы получаем [ 114]
31, 30, 31, 30, 31, 31, 30, 31, 30, 31, 31
- количество дней в каждом месяце, если мы начинаем с марта
. Итак, идея такова: перевернитесь, чтобы «странный» февральский месяц был последним, подсчитайте годы, високосные дни и дни за прошедшие месяцы с использованием «магической» формулы, чтобы получить чистое число, увеличивающееся на единицу за каждый день.
Вычитание двух из этих чисел дает разницу в дате.
PS: обратите внимание, что даже «регулярное» вычисление будет O (1)
Необходимо записать общественности/защищенному методу в базовом классе, который сгенерирует событие для Вас. Затем назовите этот метод от производного класса.
ИЛИ
это, что Вы хотите?
public class MyLabel : Label
{
protected override void OnMouseDown(MouseEventArgs e)
{
base.OnMouseDown(e);
//Do derived class stuff here
}
}
WS_EX_TRANSPARENT
расширенный стиль окна на самом деле делает это (это - то, что оперативные подсказки используют). Вы могли бы хотеть рассмотреть применение этого стиля вместо того, чтобы кодировать много обработчиков, чтобы сделать это для Вас.
, Чтобы сделать это, переопределите CreateParams
метод:
protected override CreateParams CreateParams
{
get
{
CreateParams cp=base.CreateParams;
cp.ExStyle|=0x00000020; //WS_EX_TRANSPARENT
return cp;
}
}
Для дополнительных материалов для чтения: