SetItemCheckState 中断 foreach!帮助?

发布于 2024-11-28 02:29:58 字数 703 浏览 1 评论 0原文

我是新来的,有一个关于 C# 的 CheckedListBox 的问题。

我使用 SQLite 数据库文件中的数据构建了 CheckedListBox。

我希望用户选中或取消选中项目,这样它就会在数据库中更新。

当您再次打开列表时,您之前检查的项目仍应被检查。即,如果数据库中的布尔字段对于特定项目显示“true”,则应该对其进行检查。

这是我正在使用的代码:

index = 0;
        foreach (DataRowView item in CheckedListBox.Items)
            {
                if (item.Row["viewed"].ToString() == "true")
                {                        
                   CheckedListBox.SetItemCheckState(index, CheckState.Checked);                        
                }
                index++;
            }

当我注释掉 If 语句中的行时,循环会遍历所有项目,但是当我像上面一样保留它时,循环只会进入一次。

这是为什么?

我真的是 C# 新手。

感谢您的帮助:)

I'm new here and have a question about C#'s CheckedListBox.

I built the CheckedListBox with data from a SQLite Database file.

I want the user to check or uncheck items and in doing so it updates in the database.

When you open the list again the Items you previously checked should still be checked. Ie if the boolean field in the database says "true" for a specific item, it should be checked.

Heres the code I'm using:

index = 0;
        foreach (DataRowView item in CheckedListBox.Items)
            {
                if (item.Row["viewed"].ToString() == "true")
                {                        
                   CheckedListBox.SetItemCheckState(index, CheckState.Checked);                        
                }
                index++;
            }

When I comment out the line in the If statement the loop goes through all the items, but when i leave it like it is above, the loop only enters once.

Why is that?

I'm really new to C#.

Thank you for any help :)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

烟凡古楼 2024-12-05 02:29:58

使用for循环而不是foreach

        for (int i = 0; i < checkedListBox1.Items.Count; i++)
        {
            if (((DataRowView)checkedListBox1.Items[i]).Row["viewed"].ToString() == "true")
            {
                checkedListBox1.SetItemCheckState(i, CheckState.Checked);
            }
        }

Use for loop instead of foreach.

        for (int i = 0; i < checkedListBox1.Items.Count; i++)
        {
            if (((DataRowView)checkedListBox1.Items[i]).Row["viewed"].ToString() == "true")
            {
                checkedListBox1.SetItemCheckState(i, CheckState.Checked);
            }
        }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文