我的申请表有两种形式
我在“Dashboard Form”上使用了qlickview ocx控件,然后使用此控件打开我的QVW文件,一切正常 ....
但是如果我打开的QVW文档在重新加载时遇到错误或者换句话说我的OCX控件遇到了问题,当我尝试重新打开“Dashboard Form”时我的应用程序将挂起并打开一个QVW文件。
步骤:
当我关闭仪表板表单时,我对以前的问题是如何生效感到困惑,当我重用ocx控件时,它会引起新的更大问题。
答案 0 :(得分:0)
当OCX和网络失去焦点时,它们通常表现得很奇怪。
使用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();
}
}
这是一个丑陋的混蛋,但这确实有效。 问题是当你访问它。我使用表单焦点事件来检查它。
此外,我还有一个用于重新加载文档的手动按钮。