我在主窗体中有两个形状。形状有一个上下文菜单项"dummy“,它链接到一个队列标记事件。它使用ShowDialog()打开一个模式表单。当我关闭它时,一些事件没有响应。右键单击不起作用。如果重复尝试,形状选择将起作用。鼠标移动工作正常。
我正在对模式表单执行Dispose()。下面是代码。我正在使用Visio 2019。但最新的visio订阅也会发生这种情况。我有一台x64机器。.net为4+
请帮我弄一下这个。
using Visio = Microsoft.Office.Interop.Visio;
using System.Windows.Forms;
namespace WindowsFormsApp1
{
public partial class Dialog: Form
{
public Dialog()
{
InitializeComponent();
}
}
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
axDrawingControl1.Src = "";
axDrawingControl1.Document.Application.MarkerEvent += Application_MarkerEvent;
Visio.Shape shape = axDrawingControl1.Document.Application.ActivePage.DrawRectangle(0, 0, 1, 1);
shape.AddSection((short)Visio.VisSectionIndices.visSectionAction);
shape.AddRow((short)Visio.VisSectionIndices.visSectionAction, 0, (short)Visio.VisRowTags.visTagDefault);
shape.CellsSRC[(short)Visio.VisSectionIndices.visSectionAction, 0, (short)Visio.VisCellIndices.visActionMenu].FormulaU = "\"Dummy\"";
shape.CellsSRC[(short)Visio.VisSectionIndices.visSectionAction, 0, (short)Visio.VisCellIndices.visActionAction].FormulaU = $"QUEUEMARKEREVENT(\"abc\")";
shape = axDrawingControl1.Document.Application.ActivePage.DrawOval(0, 0, 1, 1);
shape.AddSection((short)Visio.VisSectionIndices.visSectionAction);
shape.AddRow((short)Visio.VisSectionIndices.visSectionAction, 0, (short)Visio.VisRowTags.visTagDefault);
shape.CellsSRC[(short)Visio.VisSectionIndices.visSectionAction, 0, (short)Visio.VisCellIndices.visActionMenu].FormulaU = "\"Dummy\"";
shape.CellsSRC[(short)Visio.VisSectionIndices.visSectionAction, 0, (short)Visio.VisCellIndices.visActionAction].FormulaU = $"QUEUEMARKEREVENT(\"def\")";
}
private void Application_MarkerEvent(Visio.Application app, int SequenceNum, string ContextString)
{
Dialog dlg = null;
dlg = new Dialog();
dlg.ShowDialog();
//I close form
dlg.Dispose();
}
}
}发布于 2021-05-20 00:24:32
你不需要这样做
dlg.Dispose()
在这一点上,事实上这可能是导致问题的原因。当您在窗体上执行“确定”或“取消”时,将发生处置。在此之前,您仍然需要dlg对象。
https://stackoverflow.com/questions/67599574
复制相似问题