0

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

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' 被填满,然后其余代码被忽略。通过单步调试来备份我已经认为是真的,据我所知,代码甚至没有被执行。没有错误,程序运行,为什么这些行被忽略?

4

1 回答 1

1

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

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

在 sgmoore 和 gunr2171 的帮助下解决。

于 2013-04-04T17:05:28.580 回答