Я нашел отзыв о подсказке полезным, чтобы устранить эту проблему в Tomcat -
, обязательно загрузите драйвер, сначала выполнив Class.forName («org.postgresql.Driver»); в вашем коде.
Это из сообщения - https://www.postgresql.org/message-id/e13c14ec050510103846db6b0e@mail.gmail.com
Код jdbc работал нормально как автономная программа, но в TOMCAT он дал ошибку «Не найден подходящий драйвер»
Один простой способ сделать это - добавить фильтр цикла сообщений, вызвав Application.AddMessageFilter
и написав класс, который реализует интерфейс IMessageFilter
.
Через IMessageFilter.PreFilterMessage
ваш класс получает возможность видеть любые входные сообщения, которые проходят через цикл сообщений вашего приложения. PreFilterMessage
также получает возможность решить, передавать ли эти сообщения конкретному элементу управления, которому они предназначены.
Одна сложность, которую представляет этот подход, заключается в том, чтобы иметь дело с сообщениями Windows через Сообщение Структура передана в ваш метод PreFilterMessage
. Это означает обращение к документации Win32 на WM \ _LBUTTONDOWN, WM \ _MOUSEMOVE
, WM \ _LBUTTONUP
и т. Д.,
Прочтите статью . Он рекурсивно перехватывает все управляющие события и транслирует их. Вы также можете переопределить WndProc в своей форме.
Если вы не хотите обрабатывать сообщения путем переопределения Form.PreProcessMessage или Form.WndProc, тогда вы можете создать подкласс Form для привязки обработчика событий ко всем событиям MouseClick из различных элементов управления на форма.
РЕДАКТИРОВАТЬ: забыл выполнить рекурсию через дочерние элементы управления элементов управления в форме.
public class MousePreviewForm : Form
{
protected override void OnClosed(EventArgs e)
{
UnhookControl(this as Control);
base.OnClosed(e);
}
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
HookControl(this as Control);
}
private void HookControl(Control controlToHook)
{
controlToHook.MouseClick += AllControlsMouseClick;
foreach (Control ctl in controlToHook.Controls)
{
HookControl(ctl);
}
}
private void UnhookControl(Control controlToUnhook)
{
controlToUnhook.MouseClick -= AllControlsMouseClick;
foreach (Control ctl in controlToUnhook.Controls)
{
UnhookControl(ctl);
}
}
void AllControlsMouseClick(object sender, MouseEventArgs e)
{
//do clever stuff here...
throw new NotImplementedException();
}
}
В этом случае ваши формы должны быть производными от MousePreviewForm, а не от System.Windows.Forms.Form.