项目不会添加到列表框

时间:2011-08-13 05:46:58

标签: c#

我将这个简单的程序从vb转换为c#,它从一个小的访问数据库中更新,显示,创建和删除项目。 Bellow是VB中的PopulateListBox()函数,它遍历数据集中的每一行,并查看它是否被删除,未删除或有错误。这两行都有2个错误         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);
         }

2 个答案:

答案 0 :(得分:1)

在您的代码中, if条件会有更多内容。我认为这会给你带来麻烦。首先要在 {} 之间加入代码,这取决于 if condition 然后检查它。

答案 1 :(得分:0)

您错过了{语句中的开括号}if,因此如果条件匹配,紧跟if语句后面的语句会执行,之后的陈述总是执行。

在VB.NET中,您的if语句类似于:

If condition Then
    ' do something
    ' do something else
End If

要将其转换为C#并正确执行2行代码,您应该使用大括号:

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);
}