Мне нужно позвонить ShowDialog()
на моем Form
без его фактического отображения диалогового окна (оставьте Visible
на false
). К сожалению, VisibleChanged
событие не происходит, как это происходит в полной структуре. Я также не могу переопределить свойство Visible
. Самое близкое, что я могу придумать, это переопределить OnLoad
и вызвать Hide
в новом потоке (поскольку видимость формы устанавливается после ее загрузки). Это, очевидно, сумасшедший взлом (не говоря уже о том, что он выглядит очень плохо, так как вы можете видеть, как форма рисуется, а затем скрывается на экране), но я действительно не могу найти другой способ сделать это. Есть идеи?
Редактировать: мне нужно позвонить ShowDialog()
, потому что я работаю с ошибочной сторонней библиотекой, которая работает только тогда, когда вызывается в форме, подобной этой, и в моем сценарии у меня нет необходимости или желания какого-либо пользовательского интерфейса. Я подтвердил ошибку с третьей стороной, но в настоящее время у них нет ресурсов, чтобы решить эту проблему, поэтому я застрял с каким-то сумасшедшим обходным путем.
Edit2: Вот более конкретная информация о моей проблеме:
Это работает:
MyForm_OnLoad(...)
{
thirdPartyLib.StartUp(MyCallback);
}
private void MyCallback(...)
{
// Do some work with the data passed in.
}
Это не:
public static void Main()
{
thirdPartyLib.StartUp(MyCallback);
// Sleep for a bit to allow the library to fire the callback.
// Normally, the callback is triggered several times a second.
Thread.Sleep(20000);
}
private void MyCallback(...)
{
// This callback is never invoked by the library.
}
Так что единственный способ заставить вещи работать - это использовать библиотеку в Form
. К сожалению, я не хочу отображать форму в своем приложении, поэтому я пытаюсь использовать форму, чтобы утешить библиотеку, но не отображать ничего, чтобы приспособить мое приложение. Я открыт для предложений.
Обратите внимание, что API-интерфейс winforms компактной платформы не поддерживает прозрачность и не имеет события OnShown
(ни VisibleChanged
).
Edit3: Извините, ребята, я не собираюсь быть расплывчатым, я просто не хотел потеряться в деталях, которые не были актуальны. Сторонняя библиотека захватывает изображения со специальной камеры, подключенной через USB. Функция обратного вызова запускается с парой различных параметров, чтобы указать текущее состояние и данные изображения с камеры.