当 OCX 和 web 失去焦点时,Qv 经常表现出奇怪的行为。
使用 OCX 时,我使用这个
/// <summary>
/// Loading the QV document and a retry when we have missed contact with the qv document.
/// </summary>
private void LoadQvIfNecessary(bool forceDocumentReload =false)
{
Parent.Text = DateTime.Now.ToLongTimeString();
if (forceDocumentReload)
axQlikMainApp.DocName = null;
if (axQlikMainApp.ActiveDocument == null)
axQlikMainApp.DocName = Loader.Instance.Settings.QlikViewPlanningDocumentPath;
Thread.Sleep(100);
if (axQlikMainApp.ActiveDocument == null)
{
DialogResult result = Logger.ShowMessage("Du har tappat kontakten med databasen.\nVill du återuppta kontakten med databasen?\nOm du väljer ”Avbryt” stängs programmet ned.","Tappat kontakt",Logger.MessageLevel.CriticalError,MessageBoxButtons.RetryCancel);
if (result == DialogResult.Cancel)
Environment.Exit(0);
for (int i = 0; i < 10; i++)
{
Thread.Sleep(300);
Application.DoEvents();
}
LoadQvIfNecessary();
}
}
这是一个丑陋的混蛋,但这确实有效。问题是您何时访问它。我使用表单焦点事件来检查这一点。
我还有一个用于重新加载文档的手动按钮。