我目前正在使用winforms进行项目,并且在设置已填充的ListBox的选定项目时会遇到一些麻烦。基本上,我有一个SQL数据库,其中包含我猜可能被称为个人客户端的元数据,其中一个字段是服务器,数据库的名称是他们所有的数据。除此之外,我有一个表单我希望用户能够更新客户端信息。此表单上有一个客户端下拉列表,当用户选择客户端时,表单将填充其数据。填充的其中一个部分是与当前所选数据库在同一服务器上的数据库ListBox。然后我想在该列表中选择与所选客户端对应的数据库,但是我得到“数组索引超出范围”异常。这是代码基本上的样子:
//getClientInfo returns all of the fields for the selected client from the database
//getDatabases returns the database names using "SELECT name FROM master.sys.databases"
Dictionary<string, object> clientData = getClientInfo(clients_ListBox.SelectedItem);
server_ComboBox.SelectedItem = clientData["Server"].ToString();
databases_ListBox.DataSource = getDatabases("Data Source=" + server_ComboBox.Text + "; Trusted_Connection=yes");
.
.
. -----set other fields-----
.
.
databases_ListBox.SelectedItem = clientData["Database"].ToString();
然后我在最后一行得到一个例外。奇怪的是,这似乎不会出现在调试模式下,以及我切换之前的客户端和我切换到的客户端都在同一台服务器上。如果他们在不同的数据库上,我得到例外,否则没关系。有人可以帮我解释一下吗?我只能想到某种时间问题,在ListBox完成填充之前设置项目,但我没有使用任何类型的线程,所以我不知道发生了什么。
在输入时,我意识到让连接字符串使用检索到的客户端数据而不是ComboBox文本可能更聪明,但是如果有人冒险猜测为什么我有这个,我仍然会喜欢它问题。非常感谢!