【问题标题】:Some lines of code in form not being executed?表单中的某些代码行没有被执行?
【发布时间】:2013-04-04 12:43:39
【问题描述】:

我的程序中有一个表单,它有两个下拉菜单和三个按钮。当我运行表单时,我希望两个下拉菜单为空白,并且其中一个按钮被禁用。我有这个设置并且工作正常,但是我一直在处理程序中的其他类和表单,并且回来改进一些东西,我发现代码不再有效。特别是以下几行:

private void mainForm_Load(object sender, EventArgs e)
{
    this.roomsTableAdapter.Fill(this.bookingSystemDatabaseDataSet.rooms);
    timeBox.ResetText();
    roomBox.ResetText();
    updateTextOutput();
    bookButton.Enabled = false;
}

第一行使用 TableAdapter 填充关联的“房间”下拉框,这可以正常工作,但是此行之后的代码似乎根本没有执行。注释掉该行意味着它们已被执行,但显然我的“房间”下拉列表将为空。我尝试将这些行移动到表单的主要执行点,但同样的事情发生了。

此外,我尝试以“其他方式”填充“房间”下拉菜单,包括:

roomBox.DataSource = roomsTableAdapter.Fill(bookingSystemDatabaseDataSet.rooms);

和:

roomsTableAdapter.Fill(bookingSystemDatabaseDataSet.rooms);
roomBox.DataSource = roomsTableAdapter;

当然,这些尝试非常相似,但我想我会试一试。事实证明,在每种情况下都会发生完全相同的事情。 'roomBox' 被填满,然后其余代码被忽略。通过单步调试来备份我已经认为是真的,据我所知,代码甚至没有被执行。没有错误,程序运行,为什么这些行被忽略了?

【问题讨论】:

  • 真的看不出这里出了什么问题。虽然这不是一个大问题,但我非常感谢您提供的任何帮助。
  • 确定没有抛出异常吗?参见例如stackoverflow.com/questions/1583351/…
  • 要从@sgmoore 跟进,按(至少在VS2008 中)Cntl+Alt+E 以调出句柄异常。单击Thrown 下的Common Language Runtime Exceptions 复选框。
  • @gunr2171 好的,你们说对了。执行似乎停止的行引发异常:“无法启用约束。一行或多行包含违反非空、唯一或外键约束的值。”我会调查这个错误。
  • 而且...它已修复。非常感谢大家,我非常感谢您的帮助。我会以你的名义自行回答。

标签: c# winforms visual-studio-2010 visual-studio


【解决方案1】:

虽然代码看起来运行良好,但实际上抛出了一个异常 - 正如 sgmoore 所怀疑的那样,但它并没有导致中断。 gunr2171 给出了预后:

按 Ctrl+Alt+E 调出“例外”窗口,然后勾选 Thrown 下的 Common Language Runtime Exceptions 框。这使我能够看到错误 (Failed to enable constraints. One or more rows contain values violating non-null, unique, or foreign-key constraints.) 实际上很明显。我通过删除数据集中对房间的引用并重新创建它来解决此问题。

在 sgmoore 和 gunr2171 的帮助下解决了。

【讨论】:

  • 我个人建议您始终检查此值。未知错误越少越好。
猜你喜欢
  • 2015-01-08
  • 1970-01-01
  • 2021-07-23
  • 2017-05-12
  • 1970-01-01
  • 2013-09-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多