项目不会添加到列表框中
本文关键字:列表 添加 项目 | 更新日期: 2023-09-27 18:05:33
我将这个简单的程序从vb转换为c#,它更新,显示,创建和删除从一个小访问数据库的项目。下面是VB中的PopulateListBox()函数,它遍历数据集中的每一行,看看它是否被删除,未删除或有错误。这两行都有两个错误lstAlbums.Items.Add(项);和lstAlbums.Items.Add (delitem);现在我意识到字符串是未分配的,所以我添加了String item = ";String delitem = ";
那么当我启动程序时,它会用空白行填充列表框中的每第二个项目。
我该如何克服这种情况?提前感谢任何能帮助我的人。
private void PopulateListBox()
{
string item;
string delitem;
//clear the list box
lstAlbums.Items.Clear();
//access each row in the data set table
foreach (DataRow row in myDataSet.Tables["albums"].Rows)
{
//list the nondeleted rows
if (!((row.RowState & DataRowState.Deleted) == DataRowState.Deleted))
item = row["albumCode"] + ", " + row["AlbumTitle"] + ", " + row["ArtistCode"];
//list rows with update errors
if (row.HasErrors)
item = "(**" + row.RowError + "**)";
lstAlbums.Items.Add(item);
//list deleted rows
if ((row.RowState & DataRowState.Deleted) == DataRowState.Deleted)
delitem = row["albumCode", DataRowVersion.Original] + ", "
+ row["AlbumTitle", DataRowVersion.Original] + ", "
+ row["ArtistCode", DataRowVersion.Original] + "***DELETED***";
lstAlbums.Items.Add(delitem);
}
在您的代码中有更多的在线如果条件。我认为这给你制造了一个问题。所以首先包括你的代码{}这取决于如果条件然后检查它。
您在if
语句中缺少了开始和结束大括号{
和}
,因此如果条件匹配,则紧接在if
语句之后的语句执行,并且之后的语句始终执行。
VB。. NET的if
语句类似如下:
If condition Then
' do something
' do something else
End If
要将其转换为c#并正确执行这两行代码,您应该使用大括号:
if (condition)
{
// do something
// do something else
}
你当前的翻译实际上是这样的:
if (condition)
// do something (if condition is true)
// do something else (not dependent on the condition)
换句话说,总是执行第二条语句。将多条语句用大括号括起来是一个很好的做法,可以避免这种意外情况的发生。
把你的代码改成:
if (!((row.RowState & DataRowState.Deleted) == DataRowState.Deleted))
{
item = row["albumCode"] + ", " + row["AlbumTitle"] + ", " + row["ArtistCode"];
//list rows with update errors
if (row.HasErrors)
{
item = "(**" + row.RowError + "**)";
}
lstAlbums.Items.Add(item);
}
//list deleted rows
if ((row.RowState & DataRowState.Deleted) == DataRowState.Deleted)
{
delitem = row["albumCode", DataRowVersion.Original] + ", "
+ row["AlbumTitle", DataRowVersion.Original] + ", "
+ row["ArtistCode", DataRowVersion.Original] + "***DELETED***";
lstAlbums.Items.Add(delitem);
}