Обработайте это в событии OnError своего Global.asax:
protected void Application_Error(object sender, EventArgs e){
// An error has occured on a .Net page.
var serverError = Server.GetLastError() as HttpException;
if (serverError != null){
if (serverError.GetHttpCode() == 404){
Server.ClearError();
Server.Transfer("/Errors/404.aspx");
}
}
}
В Вас ошибочная страница, необходимо удостовериться установку кода статуса правильно:
// If you're running under IIS 7 in Integrated mode set use this line to override
// IIS errors:
Response.TrySkipIisCustomErrors = true;
// Set status code and message; you could also use the HttpStatusCode enum:
// System.Net.HttpStatusCode.NotFound
Response.StatusCode = 404;
Response.StatusDescription = "Page not found";
можно также обработать различные другие коды ошибки в здесь вполне приятно.
Google будет обычно следовать за этими 302 и затем соблюдать 404 кода статуса - таким образом, необходимо будет удостовериться, что Вы возвращаете это на своей ошибочной странице.
Правильный способ добиться этого - добавить обработчик сообщения (например, переопределив Form.WndProc
) в вашу форму и обработать WM_NCHITTEST
сообщение. (Вы можете найти определение этого сообщения в C # на PInvoke.net ). В частности, когда вы получите сообщение, вычислите, выполняется ли проверка попадания для точки в области, которую вы указали для изменения размера, и если это так, верните HTBOTTOMRIGHT. Процесс окна по умолчанию сделает все остальное за вас, так как он будет предполагать, что пользователь щелкнул в правом нижнем углу границы окна, даже если ваше окно не имеет границы.
Для этого подхода требуется небольшая часть взаимодействия Win32 , но при этом ваш размер будет выглядеть точно так же, как и любое другое изменение размера окна.
Самый простой способ - сделать, как сказал @benPearce, поставить панель в углу и настроить размер формы с помощью ширины / высоты. Это сработает, но изменение размера не будет плавным, особенно в Vista и Win7 Basic, где полная перерисовка отключена при стандартном перемещении и изменении размера, а попытки перерисовки будут выполняться на каждом шаге.
Обновление : В обоих подходах вам также нужно будет выяснить, как красить захват. Вы можете, например, нанести растровое изображение стандартного захвата. Хотя, учитывая, что ваша форма не имеет заголовка и рамки, поэтому вы не обязательно придерживаетесь стандартных визуальных элементов Windows, вы можете выбрать что-нибудь более привлекательное.
Обновление 2 : если у вас есть элемент управления, который покрывает все окно , он будет есть сообщения мыши формы. Вы должны каким-то образом вырезать место, которое вы хотите использовать для изменения размера, вне этого элемента управления. У вас есть несколько вариантов решения этой проблемы:
Я бы рекомендовал выбрать вариант 1 как самый простой. Вариант 3 является наиболее сложным и потребует подробных сведений о том, как ввод с помощью мыши работает в Windows, поэтому я бы не рекомендовал его. Вариант 2 является хорошей альтернативой варианту 1, но вам придется попробовать его, чтобы увидеть, как элемент управления ListView отреагирует на изменение его области.
Поместите панель или другой элемент управления в угол, используя события MouseDown и MouseMove панели, отрегулируйте размер форм соответствующим образом.
В MouseDown я записал координаты, затем в MouseMove вы можете вычислить разницу с исходным положением, чтобы настроить размер форм.
Я думаю, что «алгоритмы» (например, тела методов и базовые структуры данных) лучше всего подходят для функционального программирования. Не предполагая, что ничего полностью зависит от ввода-вывода / состояния, отличные возможности функционального программирования - это разработка алгоритмов и структур данных, что часто приводит к более короткому / простому / чистому коду, чем вы получили бы с императивным решением. (Не имитируйте императивный стиль, стиль FP лучше подходит для большинства подобных задач.)
Иногда вам нужны императивные элементы для работы с вводом-выводом или низкоуровневой производительностью, и вам нужно ООП для разделения проекта высокого уровня и архитектура большой программы, но "в малой"