项目不会添加到列表框中

本文关键字:列表 添加 项目 | 更新日期: 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);
}