无法访问 ObjectListView 的 CellEditFinished 事件弹出消息中已处置的对象
Can not access disposed object in CellEditFinished event popup messages of ObjectListView
当我点击 [Main form] 中的 'Open Modal Window' 按钮时,它显示
使用 ObjectListView 组件用数据列表构建的 [subform]。
当我点击"Age"列进行编辑,将单元格中的值改为非零值,然后点击ObjectListView组件的空白处(如果我按回车,异常不会出来),它会弹出一条消息。我在所有打开的 windows 前面留下了这条消息,等待 10 秒应用程序超时。当时异常显示:
Cannot access a disposed object. Object name: 'ObjectListView'.
代码如下:
private void button1_Click(object sender, EventArgs e)
{
modalForm = new Form2();
StartTimeOutTimer();
var result = modalForm.ShowDialog(this);
}
private void ProcessTimeOut()
{
timer1.Stop();
seconds = 0;
List<Form> openForms = Application.OpenForms.Cast<Form>().Where(frm => !string.Equals(frm.Name, "Form1") && !frm.IsDisposed).ToList();
for (var i = openForms.Count - 1; i >= 0; i--)
{
openForms[i].Dispose();
}
}
private void timer1_Tick(object sender, EventArgs e)
{
seconds++;
if (seconds == 10)
{
ProcessTimeOut();
}
}
异常出现在这一行:
var result = modalForm.ShowDialog(this);
我的声誉太低,无法上传更多链接,所以我 post 将代码添加到 OneDrive。
示例代码和解决方案在这里:
https://1drv.ms/u/s!AmQYEYkCV6gqgw6iPMVFPBKlSx1V
我尝试在我的解决方案中加入ObjectListView的源码,错误出现在源码中的GetHeaderControl方法v2.9.0
请下载我的示例代码以重现异常。如何修复此异常?任何建议将不胜感激。
我下载了代码,它似乎是 objeclistview 的一个错误。我无法修复它,但我有一个解决方法来解决您的问题:您可以异步 ShowDialog(),如下所示:
this.BeginInvoke(new Action(() => {
var myMsgBox = new MyMsgBox("Must be 0");
myMsgBox.ShowDialog();
}));
当我点击 [Main form] 中的 'Open Modal Window' 按钮时,它显示 使用 ObjectListView 组件用数据列表构建的 [subform]。
当我点击"Age"列进行编辑,将单元格中的值改为非零值,然后点击ObjectListView组件的空白处(如果我按回车,异常不会出来),它会弹出一条消息。我在所有打开的 windows 前面留下了这条消息,等待 10 秒应用程序超时。当时异常显示:
Cannot access a disposed object. Object name: 'ObjectListView'.
代码如下:
private void button1_Click(object sender, EventArgs e)
{
modalForm = new Form2();
StartTimeOutTimer();
var result = modalForm.ShowDialog(this);
}
private void ProcessTimeOut()
{
timer1.Stop();
seconds = 0;
List<Form> openForms = Application.OpenForms.Cast<Form>().Where(frm => !string.Equals(frm.Name, "Form1") && !frm.IsDisposed).ToList();
for (var i = openForms.Count - 1; i >= 0; i--)
{
openForms[i].Dispose();
}
}
private void timer1_Tick(object sender, EventArgs e)
{
seconds++;
if (seconds == 10)
{
ProcessTimeOut();
}
}
异常出现在这一行:
var result = modalForm.ShowDialog(this);
我的声誉太低,无法上传更多链接,所以我 post 将代码添加到 OneDrive。 示例代码和解决方案在这里:
https://1drv.ms/u/s!AmQYEYkCV6gqgw6iPMVFPBKlSx1V
我尝试在我的解决方案中加入ObjectListView的源码,错误出现在源码中的GetHeaderControl方法v2.9.0
请下载我的示例代码以重现异常。如何修复此异常?任何建议将不胜感激。
我下载了代码,它似乎是 objeclistview 的一个错误。我无法修复它,但我有一个解决方法来解决您的问题:您可以异步 ShowDialog(),如下所示:
this.BeginInvoke(new Action(() => {
var myMsgBox = new MyMsgBox("Must be 0");
myMsgBox.ShowDialog();
}));