我有一个与此处提出的问题非常相似的问题。我有来自串行端口的数据流。串行接收事件更新数据表(同一类中的公共属性)。当端口接收到数据时,我取消绑定一个dataGridView;通过添加一行来更新数据表;然后使用 delagate 更新 dataGridView。调试(或在 VS2010 中创建版本)时一切正常。但是,如果我从创建目录(调试或发布)或安装运行程序,当 dataGridView 到达需要滚动的行数时,程序会锁定并超时?从 VS2010 内部运行时不会发生这种情况 - 但在“外部”开发环境中会发生吗???
我正在尝试使用从dataRowChanged
.
这是代码:
void dtData_RowChanged(object sender, DataRowChangeEventArgs e)
{
SetGridView(dataGridView1);
}
和代表:
delegate void SetGridViewCallBack(DataGridView dgv);
private void SetGridView(DataGridView dgv)
{
// InvokeRequired required compares the thread ID of the
// calling thread to the thread ID of the creating thread.
// If these threads are different, it returns true.
if (this.dataGridView1.InvokeRequired)
{
SetGridViewCallBack d = new SetGridViewCallBack(SetGridView);
this.Invoke(d, new object[] { dgv });
}
else
{
this.dataGridView1.DataSource = dtData;
this.dataGridView1.ScrollBars = ScrollBars.None;
this.dataGridView1.Refresh();
this.dataGridView1.ScrollBars = ScrollBars.Vertical;
this.dataGridView1.Refresh();
// if scolled, focus on the last row
if (dataGridView1.Rows.Count > 3)
{
this.dataGridView1.CurrentCell = dataGridView1[0, dataGridView1.Rows.Count - 1];
}
}
好的-所以a)为什么会在IDE“外部”崩溃???b)我做错了什么???
提前感谢您的帮助